Elasticsearch中的条件更新:“无效的op [无]”

时间:2017-05-11 09:53:36

标签: elasticsearch elasticsearch-2.0

Elasticsearch 2.3。我正在触发此查询以根据条件更新索引中的每个文档。

{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ]
    }
  },
  "script": {
    "inline": "if (ctx._source.url.endsWith('a=6')) ctx.op = 'none' else ctx._source.url = ctx._source.url + '&b=3'"
  }
}

如上所述here,我使用ctx.op = 'none'来避免更新与条件不匹配的文档。

我正在

  

无效的操作[无]

完整错误:

"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Invalid op [none]"
}
],
"type": "illegal_argument_exception",
"reason": "Invalid op [none]"
},
"status": 400

似乎很简单,我很丢失。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

正确的操作是noop,而不是none

来自the documentation

  

就像在Update API中一样,如果您的脚本确定它不需要进行任何更改,您可以设置ctx.op =“noop”。这将导致_update_by_query从其更新中省略该文档。

PR创建:https://github.com/elastic/elasticsearch/pull/24613