在Elasticsearch Javascript客户端进行求和时返回的奇怪值
Weird value returned for sum aggregation in Elasticsearch Javascript client
我正在尝试使用Elasticsearch的Javascript客户端对数字字段(类型为double)执行求和聚合。
下面是我的代码:
this.client.search({
index: "customers",
body: {
aggs: {
counts_in_range: {
filter: {
range: {
timestamp : {
gte : startDate,
lt : endDate
}
}
},
aggs: {
counts: {
sum : {
field : "price"
}
}
}
}
}
}
}).then(function (resp) {
cb(resp.aggregations, null);
}, function (err) {
cb(null, err);
});
示例文档:
{
_index: "customers",
_type: "purchase",
_id: "98cb1066-057b-48e1-adff-eb32d9ed75a5",
_score: 1,
_source: {
timestamp: "2014-06-11T18:14:36+03:00",
itemId: 1,
price: 0.54
}
}
我从聚合中得到的是一个很长的数字,例如27549779928520990000
,而不是十进制数。问题似乎是,在我的文档中,我存储十进制数,而不是整数。如果我在price字段中存储一个整数,聚合就可以正常工作。
不确定这是否是Javascript客户端的解析问题
当您第一次索引文档时,如果没有指定,则每个字段的类型由elasticsearch决定。在您的示例中,elasticsearch认为您在文档中存储的是整数,即使您稍后将存储十进制数。所以当它计算和的时候,它会尝试只处理整数,但它遇到的是十进制数,因此返回的是长数。为避免这种情况发生,在创建新类型文档时,将每个字段映射到一个核心值。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- 尝试求和时,在我的表的页脚中返回$NaN
- javascript 在求和时返回 NaN
- 求和所有输入值的方法总是返回0
- 如何以某种方式对post返回的数据求和
- 对javascript构造函数中的参数求和并返回total
- 在Elasticsearch Javascript客户端进行求和时返回的奇怪值
- 求和返回NaN
- 当对数组元素求和时,递归函数根据顺序返回不同的值
- 对象在求和时返回NaN