摘要: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" } } ] }