开发者社区> 问答> 正文

OpenSearch如何排序sort子句?



子句说明


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

语法说明


排序子句格式为:+field1;-field2

  • field为要排序的字段,+为按字段值升序排序,-为降序排序;
  • field也支持简单的算术运算,如+、-、*、\等,但参与运算的字段类型必须一致;
  • 支持多维排序,中间用分号(;)分隔;多维排序的含义为,先按照第一维分数排序,如果第一维分数一样,再按照第二维分数进行档内排序,以此类推。
  • field部分也可以为“RANK”,表示按照相关性(即排序表达式的计算分值)进行排序。


注意事项

  1. sort为非必选子句。如果不填,则默认为sort=-RANK(按照相关性分值降序返回结果);如果显式使用了sort子句,且子句中不包含RANK,那么定义了排序表达式也不会起作用
  2. 在sort中出现的字段必须在定义应用结构的时候,创建为属性;
  3. 返回为int或者float类型的排序特征function函数也可以在sort子句中使用;
  4. string类型的字段按照字典序进行排列;
  5. 大部分场景下array类型字段均不支持。


示例


查找应用中包含“浙大”的文档,并按照type进行升序排序,如果type相同,则按照文本相关性进行排序:

展开
收起
轩墨 2017-10-25 11:27:48 3783 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
《开放搜索统一召回引擎实践》 立即下载
《开放搜索查询分析服务架构分享》 立即下载
《开放搜索在智能化行业搜索和业务增长领域的应用实践》 立即下载