Maison > développement back-end > Golang > le corps du texte

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
762 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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!