全部产品
Search
文档中心

智能开放搜索 OpenSearch:sort子句

更新时间:Aug 22, 2026

子句说明

用户可以通过查询语句控制结果的排序方式,包括指定排序的字段和升降序。

子句语法

排序格式为:

  • expression: field

    • field为要排序的字段

    • field也支持简单的算术运算,如+、-、*、\等,但参与运算的字段类型必须一致。

    • field部分也可以为“RANK”,表示按照相关性(即排序表达式的计算分值)进行排序。

  • order字段用来定义升降序,asc为按字段值升序排序,desc为降序排序,默认降序排序。

  • 支持多维排序;多维排序的含义为,先按照第一维分数排序,如果第一维分数一样,再按照第二维分数进行档内排序,以此类推。

示例:

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

sort子句是一个可选子句,可以定义排序表达式,控制升序和降序。

示例

  • 查询title索引字段中包含“北京大学”的文档并且按照排序分正排:

    query=title:'北京大学' && sort=+RANK
  • 查询商城中商品名是羽绒服的商品,要求价格从高到低排序:

    quer=band_name:'羽绒服' && sort=-price
  • 查询商城中商品名是羽绒服的商品,要求先按照价格从高到低排序然后按照销量从低到高排序:

    query=band_name:'羽绒服' && sort=-price;+sales

注意事项

  • sort为非必选子句。如果不填,则默认用RANK的降序(按照相关性分值降序返回结果);如果显式使用了sort子句,且子句中不包含RANK,那么定义了排序表达式也不会起作用。

  • 在sort中出现的字段必须在定义应用结构的时候,创建为属性。

  • 返回为int或者float类型的排序特征function函数也可以在sort子句中使用。

  • string 类型字段,英文字母按字母先后顺序排序,数字按位置逐个比较大小排序,中文按ASCII码排序。

  • sort子句中不支持使用多值字段。

  • 多维sort排序性能与每一维排序的数据特点有关,所以排序性能不能稳定保证,推荐使用排序表达式做排序。