如果返回的结果集过大,那聚合所花的时间会较多,阿里搜索中是有海选的概念,所谓的海选就是在总多的返回集中,抽取其中一些返回值,抽取的规则由业务制定。其实在elasticsearch 也是可以有的,实现也比较简单。


"sampler" : {

        "shard_size" : 300,

"field" : "A",

        "max_docs_per_value" : 10

      },


上述代码意思是:每个分区抽取分数最高的top300 的返回值, 且每个分区字段A最多抽取10个返回值。如果不加后两行,会容易出现霸屏现象!