0. 引言
elaticsearch中实现聚合操作十分常见,同时es本身存储的数据量一般都比较大,因此聚合结果数量通常都比较多,所以针对聚合结果进行分页,也是非常常见的需求
1. 实现
我们可以通过bucket_sort管道聚合来实现分页
我们来看看官方文档[1]中的定义

中文释义:一个父管道聚合,对其父多桶聚合的桶进行排序。可以指定零个或多个排序字段以及相应的排序顺序。每个桶可以根据它的_key、_count或它的子集合进行排序。此外,可以设置参数from和size,以便截断结果桶。
下面我们通过一个例子来说明其作用:
我们利用kibana提供的样例数据写个聚合:
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"date_aggs": {
"date_histogram": {
"field": "timestamp",
"interval": "day",
"format": "yyyy-MM-dd"
}
}
}
}
复制
执行结果:

添加bucket_sort来实现分页
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs": {
"date_aggs": {
"date_histogram": {
"field": "timestamp",
"interval": "day",
"format": "yyyy-MM-dd"
},
"aggs": {
"page": {
"bucket_sort": {
"sort": [],
"from": 1,
"size": 3
}
}
}
}
}
}
复制
分页结果:

可以看到我们想要的分页结果已经实现了,同时我们还可以在sort属性中定义分页排序条件
怎么样,bucket_sort的实现是不是很简单,赶紧自己动手试试吧。
关注星球,了解更多新鲜内容
References
[1]
官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/search-aggregations-pipeline-bucket-sort-aggregation.html
文章转载自Elasticsearch之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
SelectDB
140次阅读
2025-03-27 17:56:44
【第 8 期】搜索客 Meetup - Elasticsearch 的一些“双刃剑”特性
极限实验室
129次阅读
2025-03-15 16:56:54
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
SelectDB
110次阅读
2025-04-02 17:52:59
Apache Doris vs Elasticsearch:深入对比分析
数据微光
37次阅读
2025-03-24 09:42:38
使用 INFINI Gateway 保护 Elasticsearch 集群之修改查询不合理参数(二)
极限实验室
36次阅读
2025-03-17 23:49:01
oracle返回更少的数据
听溪
33次阅读
2025-03-21 18:18:52
oracle分页
张静懿
31次阅读
2025-03-19 23:40:01
使用 INFINI Gateway 保护 Elasticsearch 集群之修改查询不合理参数(一)
极限实验室
29次阅读
2025-03-16 13:21:27
ElasticSearch基于Kibana导出应用数据
IT那活儿
21次阅读
2025-03-19 11:21:06
Apache Doris vs Elasticsearch:全维度对比与实际成本案例解析
数据极客圈
20次阅读
2025-03-18 10:49:09