“ElasticSearch查询:sort排序子句”的版本间差异
跳到导航
跳到搜索
(建立内容为“category:ElasticSearch == 关于 == <syntaxhighlight lang="java" highlight=""> </syntaxhighlight>”的新页面) |
无编辑摘要 |
||
第2行: | 第2行: | ||
== 关于 == | == 关于 == | ||
ES 的默认排序是根据'''相关性分数'''排序,如果我们想根据查询结果中的指定字段排序,需要使用sort Processors处理。 | |||
* sort 子句支持多个字段排序,类似 SQL 的 order by。 | |||
sort语法: | |||
<syntaxhighlight lang="JSON" highlight=""> | |||
GET /{索引名}/_search | |||
{ | |||
"query": { | |||
...查询条件.... | |||
}, | |||
"sort": [ | |||
{ | |||
"{Field1}": { // 排序字段1 | |||
"order": "desc" // 排序方向,asc或者desc, 升序和降序 | |||
} | |||
}, | |||
{ | |||
"{Field2}": { // 排序字段2 | |||
"order": "desc" // 排序方向,asc或者desc, 升序和降序 | |||
} | |||
} | |||
....多个排序字段..... | |||
] | |||
} | |||
</syntaxhighlight> | |||
示例 1:查询 order_v2 索引的所有结果,结果根据 order_no 字段降序,order_no 相等的时候,再根据 shop_id 字段升序排序。 | |||
<syntaxhighlight lang="JSON" highlight=""> | |||
GET /order_v2/_search | |||
{ | |||
"query": { | |||
"match_all": {} | |||
}, | |||
"sort": [ | |||
{ | |||
"order_no": { | |||
"order": "desc" | |||
} | |||
}, | |||
{ | |||
"shop_id": { | |||
"order": "asc" | |||
} | |||
} | |||
] | |||
} | |||
</syntaxhighlight> | |||
类似SQL: | |||
<syntaxhighlight lang="JSON" highlight=""> | |||
select * from order_v2 order by order_no desc, shop_id asc | |||
</syntaxhighlight> | |||
示例 2: | |||
<syntaxhighlight lang="JSON" highlight=""> | |||
GET /order_v2/_search | |||
{ | |||
"query": { | |||
"match_all": {} | |||
}, | |||
"sort": [ | |||
{ | |||
"user.id": { // 嵌套json对象,使用 点 连接字段名即可 | |||
"order": "desc" | |||
} | |||
} | |||
] | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> |
2021年5月21日 (五) 00:12的版本
关于
ES 的默认排序是根据相关性分数排序,如果我们想根据查询结果中的指定字段排序,需要使用sort Processors处理。
- sort 子句支持多个字段排序,类似 SQL 的 order by。
sort语法:
GET /{索引名}/_search
{
"query": {
...查询条件....
},
"sort": [
{
"{Field1}": { // 排序字段1
"order": "desc" // 排序方向,asc或者desc, 升序和降序
}
},
{
"{Field2}": { // 排序字段2
"order": "desc" // 排序方向,asc或者desc, 升序和降序
}
}
....多个排序字段.....
]
}
示例 1:查询 order_v2 索引的所有结果,结果根据 order_no 字段降序,order_no 相等的时候,再根据 shop_id 字段升序排序。
GET /order_v2/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"order_no": {
"order": "desc"
}
},
{
"shop_id": {
"order": "asc"
}
}
]
}
类似SQL:
select * from order_v2 order by order_no desc, shop_id asc
示例 2:
GET /order_v2/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"user.id": { // 嵌套json对象,使用 点 连接字段名即可
"order": "desc"
}
}
]
}