使用ES进行分页查询时,使用order进行排序,发现排序失效,以为是添加了筛选条件的问题,去掉筛选条件,发现排序依然失效。

经排查发现如果根据某个字段进行排序,该字段的类型如果为keyword,会导致排序失效,查看结果,可以看到sort中的结果为字符串(由于seq_rank类型已经修改过了,所以在这里以i_level举例),但是如果改成Integer,可以看到sort中的值为数字。

1.keyword:

2.integer:


 

3.

http://127.0.0.1:9200/person_info/ 

/_search/ POST

{
  "from": 1,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "month": {
              "value": "2021-04",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "sort": [
    {
      "seq_rank": {
        "order": "asc"
      }
    }
  ]
}

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐