gpt4 book ai didi

elasticsearch - 在 ElasticSearch 中排序取前 N 条记录,重新排序

转载 作者:行者123 更新时间:2023-11-29 02:57:25 26 4
gpt4 key购买 nike

ElasticSearch 是否可以按字段 A 对所有文档进行排序取前 N 条记录,然后按字段 B 再次对所有记录进行排序?

到目前为止我已经尝试过的是下面但它没有按 fieldB 排序

{  
"query":{
"bool":{
"must":[
{
"match_all":{

}
}
],
"must_not":[

],
"should":[

]
}
},
"from":0,
"size":20,
"sort":[
{
"FieldA": {
"missing": "_last",
"order": "desc"
}
},
{
"FieldB": {
"missing": "_last",
"order": "desc"
}
}
],
"aggs":{

}
}

等效的 SQL 是

SELECT * FROM (SELECT TOP 250 FROM TABLE ORDER BY FieldA) ORDER BY FieldB 

在 Elasticsearch 5.3 上运行

最佳答案

我从这个 question 找到了这个解决方案.

基本上我们想要对表中的一列进行排序,获得前 N 个结果,然后再次对另一列进行排序。查询也将与此类似。

我们先按照fieldA排序,取前50,然后传给fieldB排序。

{
"sort":[
{
"FieldA": {
"missing": "_last",
"order": "desc"
}
}
],
"query":{
"match_all":{}
},
"size":50,
"aggs":{
"top_fieldB_hits":{
"top_hits":{
"sort":[
{
"FieldB": {
"missing": "_last",
"order": "desc"
}
}
],
"size":50
}
}
}
}

关于elasticsearch - 在 ElasticSearch 中排序取前 N 条记录,重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com