在 Elasticsearch 中,默认排序是 _score 降序, 即相关性排序, 相关性得分 由一个浮点数进行表示,并在搜索结果中通过 _score 参数返回
然而, 在实际应用中,相关性评分对我们来说并没有意义, 查询的接口需要做字段值进行排序,有根据时间倒叙的, id正序的, 以及组合排序等
本次我们主要说下在Elasticsearch中,根据字段值进行排序, 在Elasticsearch中, 排序使用 sort, 后面跟一个排序的数组
实例如下:
[C#] 纯文本查看 复制代码
{
"query":{
"bool":{
"must":{ "match_phrase": { "jingyingfanwei": "餐饮服务" }}
}
},
"sort":[
{"ismobile":"desc"},
{"edittime":"desc"}
]
}
本次查询是根据字段 ismobile倒序, 以及edittime倒序, 相当于sql的 order by ismobile desc, edittime desc
根据字段值进行排序时, _score 不被计算, 因为它并没有用于排序
排序条件的顺序是很重要的。
结果首先按第一个条件排序,仅当结果集的第一个 sort 值完全相同时才会按照第二个条件进行排序,以此类推。
多级排序并不一定包含 _score 。我们可以根据一些不同的字段进行排序,如地理距离或是脚本计算的特定值。
|