弹性搜索在单个查询请求中更新多个字段

Lea*_*oop 0 hadoop elasticsearch elasticsearch-plugin

在ES 5.x版本上工作,并且需要使用script更新多个字段。此外,还有更好的解决方案。

POST ../100/_update
    {
    "script" : {
        "inline": "ctx._source.student.hobbies.add(params.tag)",
        "lang": "painless",
        "params" : {
            "tag" : "cricket"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

同样的学生,我需要更新电话号码。现在我正在打电话给2 API的更新爱好和电话号码。寻找更好的解决方案来更新单个查询

Val*_*Val 5

只需在两个语句之间添加分号,如下所示:

{
  "script": {
    "inline": "ctx._source.student.hobbies.add(params.hobby); ctx._source.student.phone.add(params.phone)",
    "lang": "painless",
    "params": {
      "hobby": "cricket",
      "phone" : "122-33-4567"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您要向数组添加多个值,则可以这样做

{
  "script": {
    "inline": "ctx._source.student.hobbies.addAll(params.hobbies); ctx._source.student.phone.add(params.phone)",
    "lang": "painless",
    "params": {
      "hobbies": ["football", "cricket"],
      "phone" : "122-33-4567"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)