Elasticsearch聚合结果如何分页?尝试partition与num_partitions未成功
Elasticsearch聚合结果分页方案
你当前的配置问题出在partition和num_partitions参数的位置错误,这两个参数应该直接放在terms聚合的层级下,而非嵌套在include内部。
修正后的配置示例
'session': { 'terms': { 'field': 'data.session.keyword', 'size': 100, 'partition': 1, 'num_partitions': 10, 'order': sortQuery } }
核心参数说明
num_partitions:将聚合结果划分为指定数量的分片,比如设为10就会把全量结果拆成10份partition:指定要获取的分片序号,从0开始计数(你之前设的1对应第2个分片,若要从第一页开始需设为0)size:每个分片返回的结果条数,每次请求实际拿到的结果数等于该值
额外注意点
- 这种哈希分片式分页能保证各分片结果无重复,但无法实现全局严格有序的分页(每个分片是独立排序的)
- 如果需要全局有序的分页,可结合
search_after参数:先获取前一页最后一个聚合项的排序字段值,将其作为下一页的search_after条件,配合size参数实现连续分页
内容的提问来源于stack exchange,提问作者David Sachakov
相关产品推荐
相关产品推荐

