Rumah  >  Artikel  >  pembangunan bahagian belakang  >  antara muka es permintaan golang

antara muka es permintaan golang

PHPz
PHPzasal
2023-05-10 09:04:361298semak imbas

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.

1 Bahasa Pasang Go dan ES

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.

2. Pasang perpustakaan pelanggan 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.

3. Sambung ke 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.

4. Gunakan ES API

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

Selain operasi carian, apabila menggunakan API ES, anda harus merujuk dokumen yang sepadan seperti yang diperlukan dan membuat pemprosesan dan pelarasan yang sepadan mengikut senario sebenar.

5. Ringkasan

Artikel ini memperkenalkan cara menggunakan Golang untuk meminta antara muka ES. Dengan menyambung ke gugusan ES dan menggunakan API ES, anda boleh berinteraksi dengan ES dengan mudah dan melaraskan kaedah panggilan API yang sepadan mengikut keperluan sebenar untuk mencapai operasi seperti mencari dan mengagregat data dalam gugusan ES.

Atas ialah kandungan terperinci antara muka es permintaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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