elasticsearch,Sorting,elasticsearch" /> elasticsearch,Sorting,elasticsearch" />

Sorting Elasticsearch:排序整数描述

Sorting Elasticsearch:排序整数描述,sorting,elasticsearch,Sorting,elasticsearch,在elasticsearch 1.1.2版中使用查询按整数字段排序时: { "query": { "match_all": {} }, "sort": [ { "cubicCapacity": { "order": "asc", "ignore_unmapped": true } } ], "from": 0, "size": 150 } 结果正确,文档按自然顺序1、2、5、10排序 但当尝

在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

您应该在数字中添加前导零,因此您将使用[0001、0010、0002、0005]而不是[1、10、2、5]。 您添加到的前导零的数量将取决于您认为将具有的最大值。
e、 g.如果你认为它将低于100亿,那么你应该存储00000000059个零而不是5,00000000008个零而不是10,你应该将前导零添加到数字中,这样你将有[0001,0010002,0005]而不是[1,10,2,5]。 您添加到的前导零的数量将取决于您认为将具有的最大值。
e、 g.如果你认为它将低于100亿,那么你应该存储000000000 5 9个零而不是5,00000000 10 8个零而不是10

我没有发现这个问题,elasticsearch会按照“asc”或“desc”两个方向的自然顺序对数字类型映射为整数或长的字段进行排序。至少在我测试过的版本1.4.4中没有。我没有发现这个问题,elasticsearch会按照“asc”或“desc”两个方向的自然顺序对数值类型映射为整数或长的字段进行排序。至少在我测试的版本1.4.4中没有。