Elasticsearch:排序整数desc



当在elasticsearch (version "1.1.2")中使用query按整数字段排序时:

{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "cubicCapacity": {
        "order": "asc",
        "ignore_unmapped": true
      }
    }
  ],
  "from": 0,
  "size": 150
}

结果是正确的,文档按自然顺序排序(1,2,5,10)

但是当尝试使用"desc"完成相同的查询时:

{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "cubicCapacity": {
        "order": "desc",
        "ignore_unmapped": true
      }
    }
  ],
  "from": 0,
  "size": 150
}

结果不正确,文档以某种奇怪的方式排序,但预期为(10,5,2,1)。

那么为什么用"desc"排序不能给出一个自然顺序的正确结果呢?

注:当按asc/desc排序但使用字符串类型(1,10,2,5)时,"desc"可以正确工作(5,2,10,1)

你应该给你的数字加上前导零,所以你会得到[0001,0010,0002,0005]而不是[1,10,2,5]。你要加的前导零的数量将取决于你认为你将拥有的最大值。例如,如果你认为它将低于100亿,那么你应该存储0000000005(9个零)而不是5,0000000010(8个零)而不是10

最新更新