Maison >développement back-end >Golang >Comment effectuer des mises à jour partielles de documents dans ElasticSearch avec olivere/elastic dans Go ?
Utiliser l'API de mise à jour dans olivere/elastic pour les mises à jour partielles d'enregistrements dans Go
Dans Go, la mise à jour d'un enregistrement dans ElasticSearch peut être effectuée partiellement en utilisant l'API de mise à jour. Olivere/elastic, un client Go populaire pour ElasticSearch, fournit des fonctions permettant d'effectuer des mises à jour. Voici une explication détaillée de la façon d'utiliser l'API Update dans oilvere/elastic :
Pour effectuer une mise à jour partielle, utilisez la méthode client.Update(). Vous pouvez spécifier l'index, le type et l'ID de l'enregistrement à mettre à jour. La méthode Doc() permet de fournir les données à mettre à jour.
<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>
Dans le code ci-dessus, nous fournissons une carte avec le champ à mettre à jour comme clé et la nouvelle valeur comme valeur. Vous pouvez utiliser cette méthode pour mettre à jour n'importe quel champ de l'enregistrement.
Approche alternative (ne fonctionne pas)
Bien que l'approche ci-dessus soit simple et efficace, vous pouvez rencontrer des problèmes lors de l'utilisation de la méthode Script pour mettre à jour les enregistrements. Voici un exemple de mise à jour basée sur un script qui a échoué :
<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>
Cette approche peut ne pas fonctionner en raison de bogues potentiels dans la version 7.8.0 d'olivere/elastic. Il est recommandé de s'en tenir à la première approche pour des mises à jour partielles fiables et cohérentes dans ElasticSearch à l'aide d'olivere/elastic.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!