如何使用"update_by_query"更新数据?在Elasticsearch 2.x中? [英] How I can update data using "update_by_query" in Elasticsearch 2.x?
本文介绍了如何使用"update_by_query"更新数据?在Elasticsearch 2.x中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要通过一些查询来弹性地更新多个文档.我找到了一种解决方案.像这样:
I need multi update documents in elastic by some query. I found one solution. Like this:
{
"query": {
"term": {
"name": "some name"
}
},
"script": {
"inline": "ctx._source.some_field = \"value\""
}
}
但这并不是我真正需要的.例如,因为一个请求将更新10或20个字段.因此,为许多字段生成脚本"字符串是不舒服的.理想情况下,我需要这样的东西:
But it's not exactly what I need. Because one request will update 10, or 20 fields, for example. So it's uncomfortable to generate "script" string for many fields. Ideally, I need something like this:
{
"query": {
"term": {
"name": "some name"
}
},
"doc": {
"field1": "value1",
"field2": "value2",
"field3": "value3",
"field4": "value4",
"field5": "value5",
...
"fieldN": "valueN",
}
}
为了实现上述类似功能,我将不胜感激
In order to implement something like the above, I would appreciate an alternative
推荐答案
您可以使用像这样的脚本:
You can use a script like this one:
"script": {
"inline": "fieldsAndValues.each{ k, v -> ctx._source[k] = \"${v}\" }",
"lang": "groovy",
"params": {
"fieldsAndValues": {
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
}
}
这篇关于如何使用"update_by_query"更新数据?在Elasticsearch 2.x中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文