Schreiben einer einfachen ES-Durchschnittsaggregation in Golang

WBOY
Freigeben: 2024-02-09 14:33:08
nach vorne
475 Leute haben es durchsucht

用golang编写简单的ES avg聚合

Der PHP-Editor Xiaoxin hat Ihnen heute einen Artikel über die Verwendung von Golang zum Schreiben einer einfachen ES-Durchschnittsaggregation gebracht. ES (Elasticsearch) ist eine verteilte Open-Source-Such- und Analyse-Engine, die umfangreiche Aggregationsfunktionen bietet, einschließlich der AVG-Aggregation (Durchschnitt). In diesem Artikel wird erläutert, wie Sie mit Golang ein einfaches ES-Durchschnitts-Aggregationsprogramm schreiben, damit jeder die Aggregationsfunktion von ES besser verstehen und anwenden kann. Finden wir es gemeinsam heraus!

Frageninhalt

Ich habe versucht, eine einfache ES-Durchschnittsaggregation in Go zu schreiben, aber auch wenn das so klingt, als wüsste ich nicht, wie ich das Ergebnis analysieren soll:

ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout)
     defer cancel()
     query := elastic.NewAvgAggregation().Field("Assignment.HomeworkSize")
     ss := elastic.NewSearchSource().Query(query)
     searchResult, err := c.ES.Search().Index(StudentIndex).SearchSource(ss).Do(ctx)
     if err != nil {
         return 0, err
     }
     // Parse Results
     aggs := searchResult.Aggregations
Nach dem Login kopieren

Aber ich bin mir nicht sicher, wie ich searchresult analysieren soll, um das Ergebnis dieser Aggregation zu erhalten. Grundsätzlich möchte ich eine große Anzahl von Studentendokumenten analysieren und die durchschnittliche Größe der Aufgaben ermitteln.

Workaround

Normalerweise verwende ich http, um auf Elastic zuzugreifen. Daher gebe ich die Ergebnisse als Karte zurück und Sie können den Debugger verwenden, um Ihre Ergebnisse zu überprüfen und von dort aus zu arbeiten.

var resp map[string]interface{}
err := c.handlerequest(http.methodget, tag, req, &resp)
Nach dem Login kopieren

wobei tag Ihr Index ist, req – Ihre Anfrage zur elastischen Ausführung und Antwort die Antwort ist

Der interne Handler sieht so aus:

req, err := http.newrequest(method, c.endpoint+tag, bytes.newreader(jsonbody))

wobei jsonbody die Anfrage ist, die Sie an den Handler übergeben Alles andere ist die übliche Art, http mit go zu senden

Eine weitere Sache, die Sie beachten sollten, ist die Behandlung von Typen (Typzusicherungen) in der Ergebniszuordnung wie folgt:

for index, hit := range resp["hits"].(map[string]interface{})["hits"].([]interface{}) {

        Source := hit.(map[string]interface{})["_source"].(map[string]interface{})

        items[index] = someType{
            SomeField: Source["app_name"].(string),
        }
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSchreiben einer einfachen ES-Durchschnittsaggregation in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
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!