我正在尝试在我的一个应用程序中使用以下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}
}}}

谢谢!

最佳答案

以下查询将起作用。
更改索引名称以匹配您的索引,然后在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"
          ]
        }
      }
    }
  }
}

关于arrays - ElasticSearch无痛脚本不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41810886/

10-08 21:30