如果返回的结果集过大,那聚合所花的时间会较多,阿里搜索中是有海选的概念,所谓的海选就是在总多的返回集中,抽取其中一些返回值,抽取的规则由业务制定。其实在elasticsearch 也是可以有的,实现也比较简单。
"sampler" : {
"shard_size" : 300,
"field" : "A",
"max_docs_per_value" : 10
},
上述代码意思是:每个分区抽取分数最高的top300 的返回值, 且每个分区字段A最多抽取10个返回值。如果不加后两行,会容易出现霸屏现象!