ElasticSearch无痛脚本不起作用

时间:2017-01-23 16:20:47

标签: arrays elasticsearch elasticsearch-painless

我正在尝试在我的某个应用程序中使用以下无痛脚本查询,但它似乎不起作用。语法有问题吗?我注意到那个不起作用的部分是Math.max(doc["level"].value, 1) - 1。请注意" id"字段是一个关键字," level"是一个字节。

{script: {script: {
        inline: 'doc["id"].value == params.parentDocIds[Math.max(doc["level"].value, 1) - 1]',
        params: {parentDocIds: parentDocIds}
}}}

谢谢!

1 个答案:

答案 0 :(得分:0)

以下查询将有效。 更改索引名称以匹配您的索引并在Kibana中尝试。

GET todo-index-name-here/_search
{
  "query": {
    "script": {
      "script": {
        "inline": "def idx = (int)Math.max(doc['level'].value, 1) - 1; return (doc['id'].value == params.parentDocIds[idx])",
        "lang": "painless",
        "params": {
          "parentDocIds": [
            "x",
            "y",
            "z"
          ]
        }
      }
    }
  }
}