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