Lassen Sie uns über das Wissen über die Abfrage von Elasticsearch in der Go-Sprache sprechen

PHPz
Freigeben: 2023-04-10 15:46:00
Original
932 Leute haben es durchsucht

Elasticsearch ist eine verteilte Open-Source-Suchmaschine, die in verschiedenen Such- und Datenanalyseszenarien weit verbreitet ist. Gleichzeitig wird die Go-Sprache als effiziente und praktische Programmiersprache auch von immer mehr Entwicklern geliebt und verwendet. Für die leistungsstarken Abfrage- und Datenanalysefunktionen von Elasticsearch bietet Go auch einige praktische Abfragebibliotheken und Frameworks. In diesem Artikel werden die Kenntnisse im Zusammenhang mit der Abfrage von Elasticsearch in der Go-Sprache ausführlich vorgestellt, um Ihnen bei der besseren Implementierung von Elasticsearch-Abfragen zu helfen.

1. Einführung in die Go-Sprachbibliothek

Es gibt bereits einige ausgereifte Elasticsearch-Abfragebibliotheken in der Go-Sprache. Lassen Sie uns sie entsprechend ihren jeweiligen Eigenschaften kurz vorstellen.

  1. go-elasticsearch

go-elasticsearch ist ein von Elasticsearch offiziell gestarteter und in der Go-Sprache implementierter Elasticsearch-Client. Er enthält auch die Abfrage- und Analysefunktionen von Elasticsearch. Insbesondere nach der Version 7.x von Elasticsearch ist go-elasticsearch zur offiziell von Elasticsearch empfohlenen Go-Sprachbibliothek geworden. go-elasticsearch ist auf mehreren Betriebssystemplattformen lauffähig und unterstützt bereits die Versionen Elasticsearch 6.x und 7.x. Informationen zur spezifischen Verwendung finden Sie in der offiziellen Dokumentation.

  1. go-es

go-es ist ein Open-Source-Elasticsearch-Go-Client von Xiaomi. Aufgrund seiner Einfachheit, Benutzerfreundlichkeit und umfassenden Funktionen hat er sich zu einer der am häufigsten verwendeten Elasticsearch-Client-Bibliotheken im großen heimischen Internet entwickelt Unternehmen eins. Das Parameterdesign verschiedener Abfrage-APIs in der go-es-Bibliothek ist einfach und klar, und die Syntax kommt der Abfragesyntax von Elasticsearch sehr nahe, sodass Sie die Elasticsearch-Abfrage-DSL direkt zum Abfragen verwenden können. Einzelheiten zur Verwendung dieser Bibliothek finden Sie im Github-Repository.

  1. kingim/goes

goes ist eine einfache und benutzerfreundliche Elasticsearch Go-Clientbibliothek. Es reduziert die Lernkosten für grundlegende Elasticsearch-Operationen erheblich und unterstützt sowohl die Schnittstellen- als auch die Objektnutzung. Neben Abfrage- und Analysefunktionen stellt Goes auch eine einfache Bibliothek zur Berechnung geografischer Koordinaten zur Verfügung, die die Berechnung von Entfernungs- und Winkelwerten zwischen zwei Längen- und Breitengraden unterstützt. Einzelheiten zur Verwendung von Kingim/Goes finden Sie im Github-Repository.

  1. olivere/elastic

olivere/elastic ist die Go-Client-Bibliothek für Elasticsearch. Ähnlich wie go-elasticsearch und go-es bieten beide sehr praktische Abfrage-APIs für Elasticsearch. Allerdings legt olivere/elastic mehr Wert auf die Serialisierung und Deserialisierung von Abfrageergebnissen, unterstützt die Kapselung und Filterung mehrerer Ausgabeformate (wie Json, XML usw.) und eignet sich für Szenarien wie Front-End und Back-End Ergebnisinteraktion. Weitere Nutzungsdetails finden Sie im Github-Repository olivere/elastic.

2. Elasticsearch abfragen

In der Go-Sprache können Sie über die Elasticsearch Go-Clientbibliothek ganz einfach Elasticsearch-bezogene Abfrage-, Such- und Analysevorgänge durchführen. Aus Sicht der Schnittstellenaufrufe gibt es einige Unterschiede in der Verwendung der einzelnen Bibliotheken, die grundlegenden Abfragefunktionen, die Syntax und die Logik sind jedoch ähnlich. Im Folgenden geben wir einige Beispiele, um die Abfrage von Elasticsearch in Go vorzustellen.

  1. Alle Dokumente abfragen

es Die offizielle Dokumentation empfiehlt die folgende Methode:

    Package main
    import (
        "context"
        "fmt"

        "github.com/elastic/go-elasticsearch/v7"
        "github.com/elastic/go-elasticsearch/v7/esapi"
        "github.com/elastic/go-elasticsearch/v7/esutil"
    )

    func main() {
        es, _ := elasticsearch.NewDefaultClient()
        req := esapi.SearchRequest{
            Body:     esutil.NewJSONReader(map[string]interface{}{"query": map[string]interface{}{"match_all": map[string]interface{}{}}}),
            Index:    []string{"my-index-000001"},
            TrackTotalHits: true,
        }
        res, err := req.Do(context.Background(), es)
        fmt.Println(res, err)
    }
Nach dem Login kopieren
  1. Dokumente abfragen, die ein bestimmtes Wort enthalten

     q := elastic.NewTermQuery("content", "hello")
     searchResult, err := client.Search().
         Index("twitter").
         Query(q).
         Do(ctx)
     if err != nil {
         log.Fatalln(err)
     }
    Nach dem Login kopieren
  2. Dokumente innerhalb eines bestimmten Bereichs abfragen

     terms := []string{"world", "how", "are", "you"}
     q1 := elastic.NewTermsQuery("content", terms...)
     q2 := elastic.NewRangeQuery("publish_time").Gte("2021-01-01").Lte("2021-02-01")
     query := elastic.NewBoolQuery().Must(q1).Filter(q2)
     searchResult, err := client.Search().
         Index("twitter").
         Query(query).
         From(0).Size(10).
         Do(ctx)
     if err != nil {
         log.Fatalln(err)
     }
    Nach dem Login kopieren
  3. Verwenden Sie Aggregatfunktionen, um eine Klassifizierung zu erreichen Statistik

     agg := elastic.NewTermsAggregation().Field("category").Size(10000)
     query := elastic.NewMatchAllQuery()
     searchResult, err := client.Search().Index("goods").Size(0).Query(query).Aggregation("by_category", agg).Do(ctx)
     if err != nil {
         log.Fatalln(err)
     }
     bucketDateHists := searchResult.Aggregations.Terms("by_category")
     for _, bucket := range bucketDateHists.Buckets {
         fmt.Printf("%v: %d\n", bucket.Key, int(bucket.DocCount))
     }
    Nach dem Login kopieren

3. Zusammenfassung

Anhand der obigen Einführung können wir sehen, dass die von der Go-Sprache bereitgestellte Elasticsearch-Abfragebibliothek sehr umfangreich und außerdem sehr einfach und effizient zu bedienen ist. Ob Datensuche oder Datenanalyse, die Go-Sprache kann eine wichtige Rolle spielen. Wenn Sie ein tieferes Verständnis der Sprachkenntnisse von Elasticsearch oder Go erlangen möchten, wird natürlich empfohlen, weitere offizielle Dokumente und Quellcodes zu lesen, um Ihr Verständnis und Wissen zu vertiefen.

Das obige ist der detaillierte Inhalt vonLassen Sie uns über das Wissen über die Abfrage von Elasticsearch in der Go-Sprache sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!