Wie führe ich Teilaktualisierungen von Dokumenten in ElasticSearch mit olivere/elastic in Go durch?

DDD
Freigeben: 2024-10-24 11:49:02
Original
762 Leute haben es durchsucht

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

Verwenden Sie die Update-API in olivere/elastic für teilweise Datensatzaktualisierungen in Go

In Go kann die Aktualisierung eines Datensatzes in ElasticSearch teilweise mithilfe von erfolgen die Update-API. Olivere/elastic, ein beliebter Go-Client für ElasticSearch, bietet Funktionen zum Durchführen von Updates. Hier finden Sie eine ausführliche Erklärung zur Verwendung der Update-API in Oilvere/Elastic:

Um ein Teilupdate durchzuführen, verwenden Sie die Methode client.Update(). Sie können den Index, den Typ und die ID des zu aktualisierenden Datensatzes angeben. Mit der Doc()-Methode können Sie die zu aktualisierenden Daten bereitstellen.

<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>
Nach dem Login kopieren

Im obigen Code stellen wir eine Karte mit dem zu aktualisierenden Feld als Schlüssel und dem neuen Wert als Wert bereit. Mit dieser Methode können Sie jedes Feld des Datensatzes aktualisieren.

Alternativer Ansatz (funktioniert nicht)

Obwohl der obige Ansatz einfach und effektiv ist, können Probleme auftreten wenn die Skriptmethode zum Aktualisieren von Datensätzen verwendet wird. Hier ist ein Beispiel für ein skriptbasiertes Update, das nicht erfolgreich war:

<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>
Nach dem Login kopieren

Dieser Ansatz funktioniert möglicherweise aufgrund möglicher Fehler in olivere/elastischer Version 7.8.0 nicht. Es wird empfohlen, beim ersten Ansatz für zuverlässige und konsistente Teilaktualisierungen in ElasticSearch mit olivere/elastic zu bleiben.

Das obige ist der detaillierte Inhalt vonWie führe ich Teilaktualisierungen von Dokumenten in ElasticSearch mit olivere/elastic in Go durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!