2

我想使用内联无痛脚本在单个更新请求中更新文档中的 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."
  }

有任何想法吗?谢谢

4

0 回答 0