在混合查询中使用排序
2.16 版本引入
默认情况下,混合搜索返回的结果按分数降序排列。您可以通过在搜索请求中提供 sort
条件来对混合查询结果应用排序。有关排序条件的更多信息,请参阅结果排序。当对混合搜索应用排序时,结果会根据指定的排序条件从分片中获取。因此,搜索结果会相应地排序,并且文档分数将为 null
。只有当文档按 _score
排序时,混合搜索的排序结果中才会包含分数。
在以下示例中,混合查询搜索请求按 doc_price
应用了排序
GET /my-nlp-index/_search?search_pipeline=nlp-search-pipeline
{
"query": {
"hybrid": {
"queries": [
{
"term": {
"category": "permission"
}
},
{
"bool": {
"should": [
{
"term": {
"category": "editor"
}
},
{
"term": {
"category": "statement"
}
}
]
}
}
]
}
},
"sort":[
{
"doc_price": {
"order": "desc"
}
}
]
}
响应包含按 doc_price
降序排列的匹配文档
{
"took": 35,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4,
"relation": "eq"
},
"max_score": 0.5,
"hits": [
{
"_index": "my-nlp-index",
"_id": "7yaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "statement",
"doc_keyword": "entire",
"doc_index": 8242,
"doc_price": 350
},
"sort": [
350
]
},
{
"_index": "my-nlp-index",
"_id": "8CaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "statement",
"doc_keyword": "idea",
"doc_index": 5212,
"doc_price": 200
},
"sort": [
200
]
},
{
"_index": "my-nlp-index",
"_id": "6yaM4JABZkI1FQv8AwoM",
"_score": null,
"_source": {
"category": "permission",
"doc_keyword": "workable",
"doc_index": 4976,
"doc_price": 100
},
"sort": [
100
]
},
{
"_index": "my-nlp-index",
"_id": "7iaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "editor",
"doc_index": 9871,
"doc_price": 30
},
"sort": [
30
]
}
]
}
}
在以下示例中,按 _id
应用了排序
GET /my-nlp-index/_search?search_pipeline=nlp-search-pipeline
{
"query": {
"hybrid": {
"queries": [
{
"term": {
"category": "permission"
}
},
{
"bool": {
"should": [
{
"term": {
"category": "editor"
}
},
{
"term": {
"category": "statement"
}
}
]
}
}
]
}
},
"sort":[
{
"_id": {
"order": "desc"
}
}
]
}
响应包含按 _id
降序排列的匹配文档
{
"took": 33,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4,
"relation": "eq"
},
"max_score": 0.5,
"hits": [
{
"_index": "my-nlp-index",
"_id": "8CaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "statement",
"doc_keyword": "idea",
"doc_index": 5212,
"doc_price": 200
},
"sort": [
"8CaM4JABZkI1FQv8AwoN"
]
},
{
"_index": "my-nlp-index",
"_id": "7yaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "statement",
"doc_keyword": "entire",
"doc_index": 8242,
"doc_price": 350
},
"sort": [
"7yaM4JABZkI1FQv8AwoN"
]
},
{
"_index": "my-nlp-index",
"_id": "7iaM4JABZkI1FQv8AwoN",
"_score": null,
"_source": {
"category": "editor",
"doc_index": 9871,
"doc_price": 30
},
"sort": [
"7iaM4JABZkI1FQv8AwoN"
]
},
{
"_index": "my-nlp-index",
"_id": "6yaM4JABZkI1FQv8AwoM",
"_score": null,
"_source": {
"category": "permission",
"doc_keyword": "workable",
"doc_index": 4976,
"doc_price": 100
},
"sort": [
"6yaM4JABZkI1FQv8AwoM"
]
}
]
}
}