我在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
有人可以帮助我弄清楚哪里出了问题吗?
答案 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"
}
}
}