Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melakukan Kemas Kini Separa Dokumen dalam ElasticSearch dengan olivere/elastic dalam Go?

Bagaimana untuk Melakukan Kemas Kini Separa Dokumen dalam ElasticSearch dengan olivere/elastic dalam Go?

DDD
DDDasal
2024-10-24 11:49:02750semak imbas

How to Perform Partial Document Updates in ElasticSearch with olivere/elastic in Go?

Gunakan API Kemas Kini dalam olivere/elastic untuk Kemas Kini Separa Rekod dalam Go

Dalam Go, mengemas kini rekod dalam ElasticSearch boleh dilakukan sebahagiannya menggunakan API Kemas Kini. Olivere/elastic, pelanggan Go yang popular untuk ElasticSearch, menyediakan fungsi untuk melaksanakan kemas kini. Berikut ialah penjelasan terperinci tentang cara menggunakan API Kemas Kini dalam oilvere/elastic:

Untuk melakukan kemas kini separa, gunakan kaedah client.Update(). Anda boleh menentukan indeks, jenis dan ID rekod untuk dikemas kini. Kaedah Doc() membolehkan anda menyediakan data untuk dikemas kini.

<code class="go">import (
    "context"
    "fmt"

    "github.com/olivere/elastic/v7"
)

func main() {
    ctx := context.Background()

    // Connect to ElasticSearch
    client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))
    if err != nil {
        // Handle error
    }

    // Create example data
    _, err = client.Update().Index("test3").Type("user").Id("2").Doc(map[string]interface{}{"location": "new location"}).Do(ctx)
    if err != nil {
        // Handle error
    }

    fmt.Println("Record updated!")
}</code>

Dalam kod di atas, kami menyediakan peta dengan medan untuk dikemas kini sebagai kunci dan nilai baharu sebagai nilai. Anda boleh menggunakan kaedah ini untuk mengemas kini mana-mana medan rekod.

Pendekatan Alternatif (Tidak Berfungsi)

Walaupun pendekatan di atas mudah dan berkesan, anda mungkin menghadapi masalah apabila menggunakan kaedah Skrip untuk mengemas kini rekod. Berikut ialah contoh kemas kini berasaskan skrip yang tidak berjaya:

<code class="go">// Update record using script
script := elastic.NewScript("ctx._source.location = loc").Params(map[string]interface{}{"loc": message}).Lang("groovy")

_, err = client.Update().Index("test3").Type("user").Id("2").Script(script).Do(ctx)</code>

Pendekatan ini mungkin tidak berfungsi kerana potensi pepijat dalam versi olivere/elastic 7.8.0. Adalah disyorkan untuk kekal dengan pendekatan pertama untuk kemas kini separa yang boleh dipercayai dan konsisten dalam ElasticSearch menggunakan olivere/elastic.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Kemas Kini Separa Dokumen dalam ElasticSearch dengan olivere/elastic dalam Go?. 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