如何使用"update_by_query"更新数据?在Elasticsearch 2.x中? [英] How I can update data using "update_by_query" in Elasticsearch 2.x?

查看:38
本文介绍了如何使用"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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆