1

我正在尝试在我的一个应用程序中使用以下 Painless 脚本查询,但它似乎不起作用。语法有问题吗?我注意到实际上不起作用的部分是 this 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}
}}}

谢谢!

4

1 回答 1

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"
          ]
        }
      }
    }
  }
}
于 2018-01-04T04:42:34.380 回答