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!
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
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.
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)
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), } }
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!