在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)
发布于 2014-08-08 09:22:14
您应该将前导零添加到您的数字中,这样您将得到0001,0010,0002,0005,而不是1,10,2,5。您所添加的前导零的数量将取决于您认为您将拥有的最大值。如果你认为它将低于100亿,那么你应该储存0000000005 (9个0)而不是5和0000000010 (8个零)而不是10个。
https://stackoverflow.com/questions/25199481
复制相似问题