我目前正在尝试在Elasticsearch中聚合一个字段。当我对其他索引进行相同的查询时,它给了我正确的总和,但是对于它来说它非常高且不正确。
以下是Elasticsearch查询:
{
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*"
}
},
"filter": {
"and": [
{
"range": {
"start_timestamp": {
"from": start_date,
"to": end_date
}
}
},
{
"term": { "id" : ad_id }
}
]
}
}
},
"aggs": {
"type1": {
"terms": {
"field": "type_a",
"size": 0,
"order": {
"revenue": "desc"
}
},
"revenue": {
"sum": {
"field": "revenue"
}
}
}
}
}
我尝试通过下载所有字段进行检查并在python中总结它们并给它正确的数字,这让我相信它可能与我的查询有关?我检查了字段“收入”的映射,它是“双倍”。
是否存在某种溢出问题?
谢谢!
解决方案对我有用:在以下评论中发布了帖子链接
答案 0 :(得分:2)
因此能够在弹性搜索论坛上找到答案。根据Elasticsearch开发人员的说法,这是由于动态映射而发生的。
这种情况很少发生(因此你只能在其中一个上看到它) index)当两个分片动态地将同一个字段映射为不同的字段时 类型同时(一个分片可能会看到一个双精度值并映射 字段为双,而另一个看到一个长值并映射 领域很长)。这是1.x中的一个已知错误,将被修复 即将发布的2.0版本(此版本的测试版现已上市,但是 不要在生产中使用它)。要解决这个bug,你需要 将您的数据重新索引到具有显式映射的索引中 字段(尤其是数字字段)。
还有一个python模块可以重新索引你的映射。我在我的python中手动完成了它
以下是python helper的链接:
http://elasticsearch-py.readthedocs.org/en/latest/helpers.html