Elasticsearch:排序整数desc

时间:2014-08-08 08:52:07

标签: sorting elasticsearch

使用查询在elasticsearch(版本" 1.1.2")中按整数字段排序时:

{
  "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"排序无法用自然顺序给出正确的结果?

P.S。当按asc / desc排序但使用字符串类型(1,10,2,5)时,"desc"可正常工作(5,2,10,1)

1 个答案:

答案 0 :(得分:4)

你应该为你的数字添加前导零,所以你将[0001,0010,0002,055]而不是[1,10,2,5]。 您添加的前导零数将取决于您认为的最大值。 例如如果你认为它将低于10亿,那么你应该存储0000000005(9个零)而不是5和0000000010(8个零)而不是10个