elasticsearch 7.14 实现多个子聚合,且过滤掉空值在聚合
时间: 2024-12-14 15:14:35 浏览: 95
Elasticsearch 7.14 中,你可以通过`aggregations`功能来实现对数据的复杂分析,包括创建多个子聚合。要过滤掉聚合结果中的空值(即null),可以使用`filter`阶段配合`missing`或`exists`条件。
例如,假设你有一个文档集合,其中包含一个字段`field1`和`field2`,你想分别按这两个字段进行聚合,并排除那些`field1`或`field2`为空的文档,你可以这样做:
```json
GET /your_index/_search
{
"size": 0,
"aggs": {
"main_agg": { // 主聚合
"terms": {
"field": "field1" // 按 field1 分组
},
"aggs": { // 子聚合
"sub_agg_field1": {
"terms": {
"field": "field1"
}
},
"sub_agg_field2": {
"terms": {
"field": "field2"
}
},
"exclude_nulls": { // 过滤掉空值
"filter": {
"bool": {
"must_not": [
{"missing": { "field": "field1" }}, // 或者 {"exists": { "field": "field1" }}
{"missing": { "field": "field2" }} // 对于 field2 同理
]
}
}
}
}
}
}
}
```
在这个例子中,`exclude_nulls`过滤器会筛选出`field1`和`field2`都不为null的文档。每个子聚合会进一步细化每个主键下的数据。
阅读全文
相关推荐


















