Elasticsearch 聚合查询全解:从基础到嵌套应用
1. 范围聚合(Range Aggregations)
1.1 适用场景
术语聚合(terms aggregation)常用于字符串,但也可用于数值。对于低基数(low cardinality)的情况,如统计不同保修年限的笔记本电脑数量时很有用。然而,对于高基数字段,如年龄或价格,我们通常更关注范围。例如,想知道 18 - 39 岁、40 - 60 岁等不同年龄段的用户数量。虽然也能用术语聚合实现,但过程会很繁琐,若要添加子聚合,情况会更复杂。
1.2 范围聚合操作
为解决数值范围的问题,可使用范围聚合(range aggregation)。它允许指定数值范围,然后统计每个范围内的文档数量,这些统计结果可用于图形化展示,如饼图。
示例:按参会人数对活动进行分类
URI=localhost:9200/get-together/event/_search
curl "$URI?pretty&search_type=count" -d '{
"aggregations": {
"attendees_breakdown": {
"range": {
"script": "doc['attendees'].values.length",
"ranges": [
{ "to": 4 },
{ "from": 4, "to": 6 },
{ "from": 6 }
]
}
}
}}'
<
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



