这是由于IEEE-754双精度浮点值的舍入问题)。
可以安全地表示直到53位的整个值,但是10160815114820887的长度为54位(1001000001100100110110101000111111000100011000001110100010111)
您所索引的实际数字确实是10160815114820887,但是由于上述四舍五入问题,已对其进行索引并显示为10160815114820888
您可以在浏览器的Javascript控制台中尝试以下操作:
> var num = 10160815114820887; <--- assign value
< undefined
> num <--- display value
< 10160815114820888
您还可以在ES中尝试快速测试:
# create doc with 10160815114820887
POST test/test/1
{ "number": 10160815114820887 }
# get doc 1
GET test/test/1
# result
{ "number": 10160815114820888 }
如您所见,您已编入索引(10160815114820887)的数字显示为10160815114820888,并且可以找到为10160815114820887,因为它在搜索时也会四舍五入为10160815114820888。