如何在Kibana Discover中按指定字段的数组大小过滤文档?
Kibana Discover 筛选数组长度大于指定值的Lucene查询方案
基础语法(适用于ES 6.5+、普通数组类型)
直接在Kibana Discover的查询输入框使用以下格式的Lucene语句即可:[数组字段名]._count:[阈值比较符][阈值数值]
示例1:筛选
tags数组长度大于等于3的文档tags._count:>=3
示例2:筛选order_items数组长度等于5的文档order_items._count:5
特殊场景处理
场景1:嵌套对象数组查询
如果要统计的是嵌套(nested)类型的数组长度,原生_count语法不生效,需要在Discover添加脚本过滤器:
- 点击Discover查询栏右侧的「Add filter」
- 筛选条件选择「Edit as Query DSL」
- 输入以下DSL,替换对应字段和阈值即可:
{ "script": { "script": "doc['your_nested_field'].size() > 4" } }
场景2:ES版本低于6.5
低版本ES不支持_count语法,统一使用上述脚本过滤器的方式实现即可。
注意事项
- 统计长度的数组字段不能是text类型,text类型分词后返回的是分词后的词项数量,不是原始数组的长度,需要使用keyword、数值、嵌套对象等类型的数组
- 查询前可先在Kibana的Index Pattern设置页确认目标字段的类型识别是否正确
内容的提问来源于stack exchange,提问作者kaki gadol
相关产品推荐
相关产品推荐

