3 回答
TA贡献1871条经验 获得超8个赞
所以,我终于让这件事起作用了。这是我用来完成它的代码。
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)
希望这对某人有帮助!
TA贡献1877条经验 获得超1个赞
如果您使用的是github.com/olivere/elastic,请务必检查单元测试。它们不仅可以作为更改的安全网,还可以说明如何使用该库。例如update_test.go和update_integration_test.go附带了如何使用文档中解释的语法的示例列表。
TA贡献1818条经验 获得超8个赞
如果你想使用脚本,这里是一个条件更新的例子:
_, 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 将是您将动态传递的参数之一。我希望,它有帮助。
- 3 回答
- 0 关注
- 463 浏览
添加回答
举报