使用查询在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)
答案 0 :(得分:4)
你应该为你的数字添加前导零,所以你将[0001,0010,0002,055]而不是[1,10,2,5]。 您添加的前导零数将取决于您认为的最大值。 例如如果你认为它将低于10亿,那么你应该存储0000000005(9个零)而不是5和0000000010(8个零)而不是10个