首页 文章

Elasticsearch:排序整数desc

提问于
浏览
2

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

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

1 回答

  • 4

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

相关问题