ES dsl 分桶聚合后 在按照分桶后的doc_count排序
时间: 2023-11-28 20:48:04 浏览: 82
桶排序算法
可以使用 Elasticsearch 中的 `bucket_sort` 聚合来实现按照分桶后的 doc_count 排序。具体步骤如下:
1. 使用分桶聚合,按照需要的字段进行分桶。
2. 在每个分桶中使用子聚合来统计 doc_count。
3. 在所有分桶之外,添加 `bucket_sort` 聚合,按照子聚合统计的 doc_count 进行排序,如下所示:
```
{
"size": 0,
"aggs": {
"my_buckets": {
"terms": {
"field": "my_field"
},
"aggs": {
"doc_count": {
"value_count": {
"field": "my_field"
}
}
}
},
"sorted_buckets": {
"bucket_sort": {
"sort": [
{
"doc_count": {
"order": "desc"
}
}
],
"size": 10
}
}
}
}
```
上述 DSL 将会返回 top10 的分桶,按照 doc_count 从大到小排序。其中 `my_field` 为需要分桶的字段。
阅读全文