我想使用内联无痛脚本在单个更新请求中更新文档中的2个字段:
{
"script" : {
"inline": "ctx._source.counter1 ++ ; ctx._source.counter2 == 0 ? ctx.op = 'noop' : ctx._source.counter2 ++"}
}
问题是 - 如果满足条件且ctx.op = 'noop'
则脚本的第一部分(ctx._source.counter1 ++ ;
)也未被执行。
你怎么建议我应该这样做?
我可以将操作拆分为2个更新请求,这将使我的数据库调用加倍(但可能是'noop'调用非常快)。
我也尝试交换脚本的两部分(条件优先,增量秒) - 但后来我收到编译错误:
"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."
}
有什么想法吗? 感谢