Elasticsearch更新脚本 - 'noop'刷新整个脚本

时间:2017-05-21 09:31:13

标签: elasticsearch elasticsearch-5 elasticsearch-painless

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

有什么想法吗? 感谢

0 个答案:

没有答案