ElasticSearch 文档查询排序

说明

sort 可以按照不同的字段进行排序,并且通过 order 指定排序的方式:

  • desc 降序
  • asc 升序

单字段排序

根据 like 进行排序

相当于:

select title,like from toutiao_v1 where title like '%入门%' limit 0,2 order by like desc

es写法:

GET /toutiao_v1/_search
{
    "query":{
        "match_phrase":{
            "title":"入门"
        }
    },
    "from":0,
    "size":2,
    "_source":["title","like"],
    "sort":{
        "like":"desc"
    }
}

或者

GET /toutiao_v1/_search
{
    "query":{
        "match_phrase":{
            "title":"入门"
        }
    },
    "from":0,
    "size":2,
    "_source":["title","like"],
    "sort":{
        "like":{
            "order":"desc" //倒序。不写 或 asc 表示正序
        }
    }
}

多字段排序

相当于:

select title,like from toutiao_v1 where title like '%入门%' limit 0,2 order by date asc,like desc
  1. 先按照日期正序排序
  2. 当日期相同时,按照点赞量倒序排序
GET /toutiao_v1/_search
{
    "query":{
        "match_phrase":{
            "title":"入门"
        }
    },
    "from":0,
    "size":3,
    "_source":["title","like","date"],
    "sort":[
      {"date":"asc"}, //第一排序,按照日期正序排序
      {"like":"asc"} //第二排序,当日期相同时,按照点赞量倒序
    ]
}

或者:

GET /toutiao_v1/_search
{
    "query":{
        "match_phrase":{
            "title":"入门"
        }
    },
    "from":0,
    "size":3,
    "_source":["title","like","date"],
    "sort":[
      {
        "date":{
            "order":"asc" //第一排序,按照日期正序排序
        }
      },{
          "like":{
              "order":"desc" //第二排序,当日期相同时,按照点赞量倒序
          }
      }
    ]
}

原文出处:/show_1IX1mJfK7Xyy.html