如何在Kibana中搜索数组的存在性?
我在Kibana中有一个字段,有时是字符串,有时是数组。如何在Kibana中搜索数组的存在性?,kibana,
elasticsearch-query,Kibana,
elasticsearch Query,我在Kibana中有一个字段,有时是字符串,有时是数组。 例如: { "fld1": "val1", "fld2": "val2"} { "fld1": "val3", "fld2": [ "val4", "val5" ] } 我想搜索在“fld2”中包含数组的文档 我试过: { "query": { "bool": { "filter": { "script": { "script": { "source"
例如:
{ "fld1": "val1", "fld2": "val2"}
{ "fld1": "val3", "fld2": [ "val4", "val5" ] }
我想搜索在“fld2”中包含数组的文档
我试过:
{
"query": {
"bool": {
"filter": {
"script": {
"script": {
"source": "doc['fld2'].size > 0",
"lang": "painless"
}
}
}
}
}
}
我想你可以做一些类似的事情:
“source:“如果((ctx.\u source.doc['fld2']instanceof List})){/*在这里做点什么*/},
弹性搜索脚本返回doc['fld2']值的字符串,你必须将其转换为数组以检查大小
{
“查询”:{
“布尔”:{
“过滤器”:{
“脚本”:{
“脚本”:{
“source:“def val=doc['fld2'];val.size()>1”,
“郎”:“无痛”
}
}
}
}
}
}
您尝试过的输出是什么?我收到错误“文本字段默认禁用Fielddata。在[fld2]上设置Fielddata=true,以便通过取消反转索引将Fielddata加载到内存中。请注意,这可能会占用大量内存。或者改为使用关键字字段”,但这似乎是正确的方式,谢谢!您可以更改“fld2”的映射以启用fielddata,如。PUT/_映射{“属性”:{“fld2”:{“类型”:“文本”,“字段数据”:true}}