Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menulis pengagregatan purata ES yang mudah dalam golang

Menulis pengagregatan purata ES yang mudah dalam golang

WBOY
WBOYke hadapan
2024-02-09 14:33:08502semak imbas

用golang编写简单的ES avg聚合

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!

Kandungan soalan

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.

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam