Maison  >  Article  >  développement back-end  >  Comment effectuer des mises à jour partielles de documents dans ElasticSearch avec olivere/elastic dans Go ?

Comment effectuer des mises à jour partielles de documents dans ElasticSearch avec olivere/elastic dans Go ?

DDD
DDDoriginal
2024-10-24 11:49:02750parcourir

How to Perform Partial Document Updates in ElasticSearch with olivere/elastic in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn