在弹性搜索中聚合一个特定索引时的总和不正确

时间:2015-09-15 09:04:55

标签: elasticsearch

我目前正在尝试在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中总结它们并给它正确的数字,这让我相信它可能与我的查询有关?我检查了字段“收入”的映射,它是“双倍”。

是否存在某种溢出问题?

谢谢!

解决方案对我有用:在以下评论中发布了帖子链接

1 个答案:

答案 0 :(得分:2)

因此能够在弹性搜索论坛上找到答案。根据Elasticsearch开发人员的说法,这是由于动态映射而发生的。

  

这种情况很少发生(因此你只能在其中一个上看到它)   index)当两个分片动态地将同一个字段映射为不同的字段时   类型同时(一个分片可能会看到一个双精度值并映射   字段为双,而另一个看到一个长值并映射   领域很长)。这是1.x中的一个已知错误,将被修复   即将发布的2.0版本(此版本的测试版现已上市,但是   不要在生产中使用它)。要解决这个bug,你需要   将您的数据重新索引到具有显式映射的索引中   字段(尤其是数字字段)。

还有一个python模块可以重新索引你的映射。我在我的python中手动完成了它

以下是python helper的链接:

http://elasticsearch-py.readthedocs.org/en/latest/helpers.html