按字段排序的前100个文档的聚合

时间:2016-02-24 16:28:34

标签: elasticsearch

我想对按字段排序的前100个文档进行术语聚合(不是相关性得分!)。

我知道如何进行聚合:

{  
    "query": {
        "match_all" : {}
    },
    "aggs" : {
        "mydata_agg" : {
            "terms": {
                "field" : "title"
            }
        }
    }
}

我知道如何在字段中排序前100个文档:

{
    "query": { 
        "match_all": {} 
    }, 
    "sort": {
        "units_sold": {
            "order": "desc"
        }
    },
    "size": 100
}

但是如何在这100个已排序的文档上运行聚合术语?我可以使用范围过滤器,但我需要指定自己的 units_sold 的截止值,从而产生前100个文档。结果。我更喜欢在一个查询中做所有事情。那可能吗?

我搜索了几个小时,但无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

术语聚合会创建存储桶,我们需要对第一个聚合的结果进行排序。可以使用bucket_sort完成。阅读此article了解更多信息。