在Elasticsearch中使用聚合统计特定event.code值的数量
Elasticsearch 统计特定event.code值的数量
方法一:一次性统计多值并筛选目标项
如果需要同时查看多个event.code的计数,再从中提取特定值的数量,用terms聚合最适合:
GET /你的索引名/_search { "size": 0, "aggs": { "event_code统计": { "terms": { "field": "event.code.keyword", "size": 10 } } } }
size: 0表示不返回原始文档,只输出聚合结果event.code.keyword:若event.code是text类型,必须用.keyword子字段做精确匹配;如果是keyword类型,直接写event.code即可- 返回结果中,每个
key对应一个code值,doc_count就是该值的出现次数,找到key为"98"的项就能得到计数
方法二:精准统计单个特定值
如果只需要统计某一个code(比如98)的数量,下面两种方式更高效:
方式A:Filter聚合
GET /你的索引名/_search { "size": 0, "aggs": { "code_98的计数": { "filter": { "term": { "event.code.keyword": "98" } }, "aggs": { "总数": { "value_count": { "field": "event.code.keyword" } } } } } }
方式B:直接用Count API
如果不需要聚合上下文,用_count API性能更优:
GET /你的索引名/_count { "query": { "term": { "event.code.keyword": "98" } } }
- 这个API会直接返回匹配条件的文档总数,结果简洁高效
注意事项
- 字段类型匹配:如果
event.code是数字类型(如integer),查询时去掉.keyword,值也不用加引号(比如"event.code": 98) - 确保索引中存在对应的字段,否则会返回错误
内容的提问来源于stack exchange,提问作者P N Jain
相关产品推荐
相关产品推荐

