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
似乎很简单,我很丢失。谢谢你的帮助。
答案 0 :(得分:3)
正确的操作是noop
,而不是none
。
就像在Update API中一样,如果您的脚本确定它不需要进行任何更改,您可以设置ctx.op =“noop”。这将导致_update_by_query从其更新中省略该文档。