全部產品
Search
文件中心

OpenSearch:sort子句

更新時間:Jul 13, 2024

子句說明

使用者可以通過查詢語句控制結果的排序方式,包括指定排序的欄位和升降序。

子句文法

排序格式為:

  • expression: field

    • field為要排序的欄位

    • field也支援簡單的算術運算,如+、-、*、\等,但參與運算的欄位類型必須一致。

    • field部分也可以為“RANK”,表示按照相關性(即排序運算式的計算分值)進行排序。

  • order欄位用來定義升降序,asc為按欄位值升序排序,desc為降序排序,預設降序排序。

  • 支援多維排序;多維排序的含義為,先按照第一維分數排序,如果第一維分數一樣,再按照第二維分數進行檔內排序,以此類推。

樣本:

{
  "sort" : [
    {
      "expression"  : "price*10",
      "order" : "desc"
    },
    {
      "expression"  : "RANK",
      "order" : "asc"
    }
  ]
}

sort子句是一個可選子句,可以定義排序運算式,控制升序和降序。

注意事項

  • sort為非必選子句。如果不填,則預設用RANK的降序(按照相關性分值降序返回結果);如果顯式使用了sort子句,且子句中不包含RANK,那麼定義了排序運算式也不會起作用;

  • 在sort中出現的欄位必須在定義應用結構的時候,建立為屬性;

  • 返回為int或者float類型的排序特徵function函數也可以在sort子句中使用;

  • string 類型欄位,英文字母按字母先後順序排序,數字按位置按個比較大小排序,中文按ASCII碼排序。

  • sort子句中不支援使用多重值欄位。

  • 多維sort排序效能與每一維排序的資料特點有關,所以排序效能不能穩定保證,推薦使用排序運算式做排序。