我想先将 Elasticsearch 返回的结果(按_score 排序)限制为 1000,然后按特定字段对这 1000 个结果进行排序。
SQL 中的一个示例是 -
select name,count,score
from
(select name,count,score from users order by score limit 1000) A
order by count
如何在 Elasticsearch 中执行此操作?
最佳答案
您可以使用辅助排序选项来实现此目的。按以下顺序排序
- _score( Elasticsearch 得分)
- sort_field(根据您的 Q 进行计数)
下面的查询将搜索文档并首先使用 elasticsearch 计算的分值进行排序,然后第二级排序将应用字段计数并且大小(限制)将为 1000,因此只有 1000 个文档返回给您。
示例
{
"size": 1000,
"query": {
"match_all": {}
},
"sort": [
"_score",
{
"count": {
"order": "asc"
}
}
],
"fields": [
"name",
"count",
"score"
]
}
关于elasticsearch - Elastic Search中如何限制然后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117250/