摘要:ES的默认排序是根据相关性分数排序,如果我们想根据查询结果中的指定字段排序,需要使用sort Processors处理。POST /{索引名}/_search { "query"...
ES的默认排序是根据相关性分数排序,如果我们想根据查询结果中的指定字段排序,需要使用sort Processors处理。
POST /{索引名}/_search { "query": { ...查询条件.... }, "sort": [ { "{Field1}": { // 排序字段1 "order": "desc" // 排序方向,asc或者desc, 升序和降序 } }, { "{Field2}": { // 排序字段2 "order": "desc" // 排序方向,asc或者desc, 升序和降序 } } ....多个排序字段..... ] }
sort语法支持多个字段排序,类似SQL的order by。
例子1:
POST /shop/_search { "query": { "match_all": {} }, "sort": [ { "order_no": { "order": "desc" } }, { "shop_id": { "order": "asc" } } ] }
查询shop索引的所有结果,结果根据order_no字段降序,order_no相等的时候,再根据shop_id字段升序排序。
类似SQL:
select * from shop order by order_no desc, shop_id asc
例子2:
POST /shop/_search { "query": { "match_all": {} }, "sort": [ { "user.id": { // 嵌套json对象,使用 点 连接字段名即可 "order": "desc" } } ] }