我刚打酱油去了,不好意思

请问一个在查询的同时分组聚合的问题

Elasticsearch | 作者 envy666 | 发布于2019年01月24日 | 阅读数:1303

我现在有一个索引,有大概600G的数据(3000万条文档),文档分为三个类型A、B、C,
前台输入查询字符串后,后台返回两个结果:
一是结果含有哪几个类型的数据以及每种类型的个数,如 A:600000条、B:1000000条、C:200000条
二是按照A、B、C的顺序,取第一顺位类型按照业务字段排序后前10条数据
 
现在我的做法是直接在搜索时按照类型字段分组聚合,
搜索时先按照类型字段排序再按照其他业务字段排序,
这样一次查询就可以取出上边所需的两个结果数据,
但是我觉得这种方法在查询的时候进行了多余的排序和检索,
比如我如果是将聚合和检索分为两次请求,
首先根据条件分组聚合得到 A:600000条、B:1000000条、C:200000条,
这时候其实我只需要得到A类数据的前十条
那么我在检索的时候加上 类型字段=A,那么我需要检索以及排序的结果集就会小的多,
所以请问应不应该分为两次请求或者有什么更好地办法
 
(不知道我又没有说明白)谢谢大家
已邀请:

rochy - rochy_he

赞同来自:

使用 TermsAgg + TopHits 即可解决问题

要回复问题请先登录注册