我在ES中有一个文档。一个名为“site”的字段,当前值为“Elasticsearch”。我想将此字段的值更新为“stackOverFlow”。我使用下面的脚本相同。
“脚本”:{
“lang”:“无痛”,
“inline”:“用于(在params.keySet()中的k){if(!k.equals('ctx')){ctx._source.put(k,params.get(k))}}”
},
“参数”:{
“site”:“stackOverFlow”
}
我的响应取得了成功,_version增加了1。但是仍然没有更新我的文档。网站的值(value)仍为“Elasticsearch”。
注意:我使用的是ES版本6.4
谁能帮助我找出问题所在?

最佳答案

脚本中应包含“params”字段。将“参数”之前的花括号移至末尾。
下面的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"
    }
  }
}

关于elasticsearch - 无痛脚本更新无法实际更新文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63982990/

10-15 22:17