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

Menulis pengagregatan purata ES yang mudah dalam golang

WBOY
Lepaskan: 2024-02-09 14:33:08
ke hadapan
519 orang telah melayarinya

用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
Salin selepas log masuk

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)
Salin selepas log masuk

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),
        }
    }
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan