Maison > développement back-end > Golang > 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
Libérer: 2024-10-24 11:49:02
original
959 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal