在 google go 中使用 Olivere/elastic 更新 ElasticSearch

我正在使用 go 在弹性搜索中插入一条记录,如此处所述:https ://github.com/olivere/elastic 现在,如果我必须部分更新它(假设只有一个像“名称”这样的条目),那么我想使用更新 API。我找不到任何描述如何在oilvere/elastic 中使用此API/函数的文档。我想知道是否有人以前使用过这个并且可以帮助我。


青春有我
浏览 464回答 3
3回答

ITMISS

所以,我终于让这件事起作用了。这是我用来完成它的代码。update, err := client.Update().Index("test3").Type("user").Id("2").Doc(map[string]interface{}{"location": message}).Do()fmt.Println("updated id: ", update.Id)这对我来说很好。我尝试了另一种方法来更新它,但它不起作用。我把它贴在这里,以便人们可以查看和检查。是这样的。update := client.Update().Index("test3").Type("user").Id("2").Script(elastic.NewScript("ctx._source.location = loc").Params(map[string]interface{}{"loc": message}).Lang("groovy"))fmt.Println("updated id: ", update.Id)希望这对某人有帮助!

冉冉说

如果您使用的是github.com/olivere/elastic,请务必检查单元测试。它们不仅可以作为更改的安全网,还可以说明如何使用该库。例如update_test.go和update_integration_test.go附带了如何使用文档中解释的语法的示例列表。

弑天下

如果你想使用脚本,这里是一个条件更新的例子:_, err := client.UpdateByQuery().        Query(query).        Index(index).        Script(elastic.NewScript("ctx._source = tag").Params(map[string]interface{}{"tag": doc}).Lang("groovy")).        Type(docType).IgnoreUnavailable(true).        Do(ctx)index是文档所在的 ES 索引名称。 查询具有所有必要条件(例如:仅当年龄>18 时才更新文档)。有关查询的更多知识,请参阅此处。查询的输出将在 ctx.source 中可用,这里我将其设置为我传递的参数。您还可以执行以下操作: "ctx.source.salary = sal" 在这种情况下,sal 将是您将动态传递的参数之一。我希望,它有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go