ES:定製搜尋結果的排序規則
阿新 • • 發佈:2019-01-26
1、預設排序規則
預設情況下,是按照_score降序排序的
GET /_search
{
"query": {
"bool": {
"filter": {
"term": {
"author_id": 110
}
}
}
}
}
GET /_search { "query": { "constant_score": { "filter": { "term": { "author_id": 110 } } } } }
2、定製排序規則
GET /company/employee/_search
{
"query": {
"constant_score": {
"filter": {
"range": {
"age": {
"gte": 30
}
}
}
}
},
"sort": [
{
"join_date": {
"order": "asc"
}
}
]
}
3、field索引兩次來解決字串排序問題
如果對一個string field進行排序,結果往往不準確,因為分詞後是多個單詞,再排序就不是我們想要的結果了
通常解決方案是,將一個string field建立兩次索引,一個分詞,用來進行搜尋;一個不分詞,用來進行排序
GET /website/article/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"title.raw": {
"order": "desc"
}
}
]
}