Heim >Backend-Entwicklung >Golang >Wie führe ich Teilaktualisierungen von Dokumenten in ElasticSearch mit olivere/elastic in Go durch?
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>
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>
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!