我需要在其中一个索引中执行聚合+排序+分页。
我了解了Elastic search的内部功能,
我总共有5个分片,它将对单个分片进行排序并获取结果,默认情况下,每个分片将返回10条记录。然后再对这50条记录进行排序,它将获取前10条记录,因为默认大小是10。
输出:
聚合结果被返回在名为“aggregations”的单独字段中,以便在此聚合数据中进行分页,size和.In不起作用。
我厌倦了做termBuilder.size(500),现在这个链接(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html)的逻辑是不同的
这会导致数据的不准确。
有没有人能建议我如何处理聚合+分页。
发布于 2015-01-05 20:17:31
在elasticsearch中,无法对聚合进行分页。如果指定了size,查询将不会给出准确的结果。因此,进行排序和分页的唯一方法是指定大小为0并返回所有文档,然后将所有结果累加到一个列表中以供进一步操作,从而获得所需的结果。
发布于 2018-11-12 17:13:11
我认为Composite Aggregation可能会解决您的问题,因为它允许在聚合结果中进行分页。
请参考this doc
发布于 2019-03-10 09:12:45
在v6.1及更高版本中,ElasticSearch支持Bucket Sort Aggregation。它允许聚合结果中的"sort“、"size”和"from“参数。
请参考this doc
https://stackoverflow.com/questions/27776582
复制相似问题