Elasticsearch sort排序语法

袁志蒙 375次浏览

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


随机内容

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~