如何在 Kibana 中搜索数组的存在?

How to search for existence of array in Kibana?

我在 Kibana 中有一个字段,有时是字符串,有时是数组。
例如:

{ "fld1": "val1", "fld2": "val2"} 
{ "fld1": "val3", "fld2": [ "val4", "val5" ] }

我想搜索包含 "fld2" 数组的文档。

我试过了:

{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source": "doc['fld2'].size > 0",
            "lang": "painless"
          }
        }
      }
    }
  }
}

我想你可以这样做:
"source": "if ((ctx._source.doc['fld2'] instanceof List})) { /* do something here */}",

Elastic 搜索脚本 return doc['fld2'] 值的字符串,您必须将其转换为数组以检查大小。

{
  "query": {
        "bool" : {
            "filter" : {
                "script" : {
                    "script" : {
                        "source": "def val = doc['fld2']; val.size() > 1",
                        "lang": "painless"
                     }
                }
            }
        }
    }
}