我想使用内联无痛脚本在单个更新请求中更新文档中的 2 个字段:
{
"script" : {
"inline": "ctx._source.counter1 ++ ; ctx._source.counter2 == 0 ? ctx.op = 'noop' : ctx._source.counter2 ++"}
}
问题是 - 如果满足条件并且ctx.op = 'noop'
脚本的第一部分 ( ctx._source.counter1 ++ ;
) 也没有被执行。
你会如何建议我应该这样做?
我可以将操作拆分为 2 个更新请求,这将使我的数据库调用加倍(但也许“noop”调用非常快)。
我还尝试交换脚本的 2 个部分(首先是条件,其次是增量) - 但随后出现编译错误:
"script_stack": [
" ctx._source. ...",
" ^---- HERE"
],
"script": " ctx._source.counter2 > 0 ? ctx.op = 'noop' : ctx._source.counter2++ ; ctx._source.counter1++ ",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Not a statement."
}
有任何想法吗?谢谢