前言
Elasticsearch 查詢默認(rèn)按照分值由大到小進(jìn)行排序。
分值計(jì)算基于 BM25 算法。
Elasticsearch排序
影響排序的方式
可以使用 boost 對(duì)字段加權(quán),從而影響排序結(jié)果。
GET kibana_sample_data_logs/_search
{
"track_total_hits": true,
"query": {
"bool": {
"should": [
{
"match": {
"message": {
"query": "elasticsearch",
"boost": 2
}
}
},
{
"match": {
"message": {
"query": "beats",
"boost": 1
}
}
}
]
}
}
}
可以使用 script_score 查詢指定分值,從而影響排序結(jié)果
GET kibana_sample_data_logs/_search
{
"track_total_hits": true,
"query": {
"script_score": {
"query": {
"match": {
"message": "elasticsearch"
}
},
"script": {
"source": """
_score * 2
"""
}
}
}
}
sort排序
對(duì)指定字段進(jìn)行排序,對(duì)應(yīng)的 doc_values
參數(shù)需要設(shè)置為 true。而 doc_values
參數(shù)在創(chuàng)建索引時(shí),默認(rèn)為 true,即啟用。如果字段不需要排序,可以設(shè)置為 false。值得注意的是,text 類(lèi)型的字段對(duì)應(yīng)的 doc_values
參數(shù)默認(rèn)為 false。
PUT kibana_sample_data_logs_values
{
"mappings": {
"properties": {
"bytes": {
"type": "integer",
"doc_values": false
}
}
}
}
POST _reindex
{
"source": {
"index": "kibana_sample_data_logs"
},
"dest": {
"index": "kibana_sample_data_logs_values"
}
}
GET kibana_sample_data_logs_values/_search
{
"track_total_hits": true,
"query": {
"bool": {
"should": [
{
"match": {
"message": {
"query": "elasticsearch"
}
}
}
]
}
},
"sort": [
{
"bytes": {
"order": "desc"
}
}
]
}
上述查詢會(huì)拋出異常。
sort
支持多字段排序。先按照第一個(gè)字段排序,然后按照下一個(gè)字段排序。
GET kibana_sample_data_logs/_search
{
"track_total_hits": true,
"sort": [
{
"timestamp": {
"order": "desc"
}
},
{
"response.keyword": {
"order": "desc"
}
},
{
"bytes": {
"order": "desc"
}
},
"_score"
]
}
-
track_scores
:指定是否追蹤評(píng)分。默認(rèn) false,即在使用 sort 排序時(shí),默認(rèn)不計(jì)算評(píng)分。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-779106.html -
order
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-779106.html
到了這里,關(guān)于Elasticsearch使用篇 - 查詢排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!