Sorting Elasticsearch:排序整数描述
在elasticsearch 1.1.2版中使用查询按整数字段排序时: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排序 但当尝
{
"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中没有。