我想首先将弹性搜索返回的结果(按_score排序)限制为1000,然后按特定字段对这1000个结果进行排序。
SQL中的一个例子是 -
select name,count,score
from
(select name,count,score from users order by score limit 1000) A
order by count
如何在弹性搜索中执行此操作?
答案 0 :(得分:1)
您可以使用辅助排序选项来实现此目的。按以下顺序排序
Bellow查询将搜索文档并首先使用elasticsearch计算得分值进行排序,然后第二级排序将应用于字段计数,大小(限制)将为1000,因此只有1000个文档返回给您。
<强>示例强>
{
"size": 1000,
"query": {
"match_all": {}
},
"sort": [
"_score",
{
"count": {
"order": "asc"
}
}
],
"fields": [
"name",
"count",
"score"
]
}
答案 1 :(得分:0)
尝试以下查询
{
"filtered" : {
"filter" : {
"limit" : {"value" : 100}
},
"sort" : [
{"score " : {"order" : "asc"}}
]
"query" : {
"term" : { "name" : "shay" }
}
}
}