提问要多花一点心思哦

Elasticsearch对聚合结果进行分页,请问是否能够实现

Elasticsearch | 作者 yeziblo | 发布于2020年03月23日 | 阅读数:691

如题,各位伙伴们,我现在有一个需求:
 
假设我现在有一个索引,其中有一个字段(username)记录了用户的姓名,且同一个用户可以多次出现在索引上。
现在我有一个需求,是需要计算索引中每一个用户的出现次数,并按照出现的频率从大到小进行排序,最后对排序结果进行分页。
 
前面的需求很快就做好了,我针对这一索引中的username字段做了一个Aggregation.terms聚合操作,然后求出每一个username的doc_count,这就是它的出现频率了。
简略代码如下:
builder.aggregation(AggregationBuilders.terms("count_group").field("username"));
 
然后到了分页的时候就出了问题……我查询了网上的一些信息,得出的结果是ES并不支持对聚合结果的分页操作。
所以想请教下各位小伙伴,有没有遇到过类似需求的,你们是怎么处理的呢?
 
PS:我的一个想法是做一个中间结果缓存索引,记录username的出现次数并同步到这个中间索引中,这样只需要一个简单的命令即可支持排序与分页。但是问题在于这个数据是实时在变的,维护这个中间结果索引就需要我频繁的更新索引中的次数字段,而ES在频繁更新的环境中并不是很好T  T
已邀请:

laoyang360 - Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

《Elasticsearch聚合后分页深入详解》, 一起来围观吧 https://blog.csdn.net/wojiushi ... 12946

要回复问题请先登录注册