1. 程式人生 > >ES:定製搜尋結果的排序規則

ES:定製搜尋結果的排序規則

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"
      }
    }
  ]
}

在這裡插入圖片描述