Editor PHP Xiaoxin hari ini membawakan anda artikel tentang menggunakan Golang untuk menulis pengagregatan purata ES yang mudah. ES (Elasticsearch) ialah enjin carian dan analisis teragih sumber terbuka yang menyediakan fungsi pengagregatan yang kaya, termasuk pengagregatan purata (purata). Artikel ini akan memperkenalkan cara menggunakan Golang untuk menulis program pengagregatan purata ES yang mudah untuk membantu semua orang memahami dan menggunakan fungsi pengagregatan ES dengan lebih baik. Mari kita ketahui bersama!
Saya telah cuba menulis pengagregatan purata es yang mudah, tetapi walaupun ini kelihatan seperti saya tidak tahu cara menghuraikan hasilnya:
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
Tetapi saya tidak pasti cara menghuraikan searchresult
untuk mendapatkan hasil pengagregatan ini. Pada asasnya saya ingin menghuraikan sejumlah besar dokumen yang mewakili pelajar dan mendapatkan saiz purata tugasan.
Saya biasanya menggunakan http untuk mengakses elastik. Jadi saya mengembalikan hasil sebagai peta dan anda boleh menggunakan penyahpepijat untuk menyemak hasil anda dan berfungsi dari sana.
var resp map[string]interface{} err := c.handlerequest(http.methodget, tag, req, &resp)
di mana teg adalah indeks anda, req - permintaan anda untuk pelaksanaan anjal, dan respons ialah respons
Pengendali dalaman kelihatan seperti ini:
req, err := http.newrequest(method, c.endpoint+tag, bytes.newreader(jsonbody))
di mana jsonbody ialah permintaan yang anda sampaikan kepada pengendali Segala-galanya adalah cara biasa untuk menghantar http dengan go
Satu lagi perkara yang perlu diingat ialah mengendalikan jenis (jenis penegasan) dalam peta hasil, seperti ini:
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), } }
Atas ialah kandungan terperinci Menulis pengagregatan purata ES yang mudah dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!