Dengan kemunculan era data besar, orang ramai semakin memberi perhatian kepada pemprosesan dan penyimpanan data Dalam banyak senario aplikasi, data perlu dicari, dianalisis dan ditanya. Pada masa ini, Elasticsearch (ES) menjadi enjin carian dan analitik yang popular digunakan oleh banyak perniagaan dan institusi. Apabila menggunakan ES, bagaimana untuk melaksanakan interaksi dengan ES melalui Golang? Artikel ini akan memperkenalkan cara menggunakan Golang untuk meminta antara muka ES daripada aspek berikut.
Mula-mula, anda perlu memasang bahasa Go dan ES. Yang pertama boleh dimuat turun dan dipasang dari tapak web rasmi, dan yang terakhir boleh dimuat turun dari tapak web rasmi atau mula menggunakan bekas Dalam artikel ini, kami akan menggunakan imej Docker ES untuk memasang ES.
Untuk memudahkan kami menggunakan Golang untuk berinteraksi dengan ES, ES menyediakan beberapa perpustakaan pelanggan rasmi. Anda boleh menggunakan arahan berikut untuk memasang pustaka klien Golang untuk ES:
go get github.com/elastic/go-elasticsearch/v8
Nota: Semasa memasang, anda perlu menggunakan versi cawangan v8
, kerana versi ini menyokong versi 7.x bagi ES.
Sebelum menggunakan ES, anda perlu menyambung ke gugusan ES. ES menyokong sambungan melalui HTTP atau TCP, dengan sambungan HTTP merupakan kaedah yang paling biasa digunakan. Kod sampel untuk menyambung ke ES menggunakan Golang adalah seperti berikut:
package main import ( "context" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } _, err = es.Info() if err != nil { log.Fatalf("无法连接到ES集群:%s ", err) } fmt.Println("ES连接成功!") }
Kod di atas mencipta objek sambungan klien ES, kemudian menyambung ke gugusan ES dan menyemak sama ada sambungan berjaya dengan memanggil Info
kaedah. Jika sambungan berjaya, ES连接成功!
akan dikeluarkan pada konsol. Jika ia tidak dapat menyambung ke gugusan ES, mesej ralat yang sepadan akan dikeluarkan pada konsol.
ES menyediakan satu siri API untuk mengendalikan data dalam kelompok ES, termasuk operasi indeks, carian, pengagregatan, dsb. Apabila menggunakan API, anda perlu memberi perhatian kepada kaedah permintaan yang sepadan, laluan permintaan, kandungan permintaan dan butiran lain.
Yang berikut mengambil operasi carian sebagai contoh Kod sampel adalah seperti berikut:
package main import ( "context" "encoding/json" "fmt" "github.com/elastic/go-elasticsearch/v8" "log" "strings" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://localhost:9200", }, } es, err := elasticsearch.NewClient(cfg) if err != nil { log.Fatalf("创建ES客户端失败:%s ", err) } res, err := es.Search( es.Search.WithIndex("test_index"), es.Search.WithBody(strings.NewReader(`{"query":{"match_all":{}}}`)), es.Search.WithPretty(), ) if err != nil { log.Fatalf("搜索失败:%s ", err) } defer res.Body.Close() var r map[string]interface{} if err := json.NewDecoder(res.Body).Decode(&r); err != nil { log.Fatalf("无法解析响应体:%s ", err) } fmt.Println(r) }
Kod di atas mencipta objek sambungan klien ES, dan kemudian melaksanakan operasi carian dengan memanggil <.> kaedah Anda perlu menentukan nama indeks dan pernyataan pertanyaan Carian. Hasilnya akan dikembalikan dalam format JSON dan hasil carian yang berkaitan boleh diperoleh dengan menghuraikan data JSON. Search
Atas ialah kandungan terperinci antara muka es permintaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!