需要注意以下两点
1.访问ES搜索返回数据有通过doc或者params 两种方式。如果数据是浮点类型则必须使用params['_source']['name'] 方式进行范围,doc['name']方式会精度丢失。
2.使用ES聚合函数或者计算时候请先把浮点类型转成整形计算,否则聚合后也会出现精度丢失。
例子如下:如果money是有两位小数。
"sum": {
"script": {
"lang":"painless"
"inline":"def trams = params['_source']['money'];BigDecimal bd = new BigDecimal(trams).mutiply(new BigDecimal(\"100\"));return bd"
}
}