无痛脚本更新无法实际更新文档

时间:2020-09-20 19:42:44

标签: elasticsearch

我在ES中有一个文档。一个名为“ site”的字段,当前值为“ Elasticsearch”。我想将此字段的值更新为“ stackOverFlow”。我在下面的脚本中使用相同的代码。

“脚本”:{ “ lang”:“无痛”, “ inline”:“用于(在params.keySet()中的k){if(!k.equals('ctx')){ctx._source.put(k,params.get(k))}}” }, “参数”:{ “ site”:“ stackOverFlow” }

我的回复越来越成功,_version增加了1。但是我的文档仍然没有更新。该网站的价值仍为“ Elasticsearch”。

注意:我正在使用ES版本6.4

有人可以帮助我弄清楚哪里出了问题吗?

1 个答案:

答案 0 :(得分:1)

“参数”字段应包含在脚本内。将“参数”之前的花括号移到末尾。

下面的ES查询对我有用!

POST /itest/_doc/1/_update
{
  "script": {
    "lang": "painless",
    "inline": "for (k in params.keySet()){if (!k.equals('ctx')){ctx._source.put(k, params.get(k))}}",
    "params": {
      "site": "stackOverFlow"
    }
  }
}