美文网首页
Elasticsearch sort排序子句 --- 2022-

Elasticsearch sort排序子句 --- 2022-

作者: 一位先生_ | 来源:发表于2022-06-06 09:24 被阅读0次

    ES的默认排序是根据相关性分数排序,如果我们想根据查询结果中的指定字段排序,需要使用sort Processors处理。

    sort语法:

    GET /{索引名}/_search
    {
      "query": {
        ...查询条件....
      },
      "sort": [
        {
          "{Field1}": { // 排序字段1
            "order": "desc" // 排序方向,asc或者desc, 升序和降序
          }
        },
        {
          "{Field2}": { // 排序字段2
            "order": "desc" // 排序方向,asc或者desc, 升序和降序
          }
        }
        ....多个排序字段.....
      ]
    }
    

    sort子句支持多个字段排序,类似SQL的order by。

    例子1:

    GET /order_v2/_search
    {
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "order_no": {
            "order": "desc"
          }
        },
        {
          "shop_id": {
            "order": "asc"
          }
        }
      ]
    }
    

    查询order_v2索引的所有结果,结果根据order_no字段降序,order_no相等的时候,再根据shop_id字段升序排序。

    类似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"
          }
        }
      ]
    }
    

    相关文章

      网友评论

          本文标题:Elasticsearch sort排序子句 --- 2022-

          本文链接:https://www.haomeiwen.com/subject/tunfsrtx.html