我正在运行Elastic 1.4.4并创建了一些带有范围聚合和子聚合(基数)的代码。 如果我使用matchall查询运行我的代码,并使用一些filterquery来获取子集,那么一切正常。
我看到了范围聚合和子聚合的预期值。
但是一旦我添加一个查询,事情就会崩溃。 我遇到了一个错误:"两个兄弟聚合不能有相同的名称"。
这看起来很奇怪,因为我之前定义的聚合/子聚合没有任何问题。
这基本上就是我做的事情:
SearchResponse response =
client.prepareSearch(esIndex)
.setQuery(query)
.setFrom(startAt)
.setSize(topSize)
.addAggregation(AggregationBuilders.cardinality(UNIQUE_IPS).field(Constants.MAIN_COLLAPSE_FIELD))
.addAggregation(collapse)
.addAggregation(filtersetbranche) \
.addAggregation(Constants.FTE_RANGES_AGGS.subAggregation(AggregationBuilders.cardinality("ftecounts").field(Constants.MAIN_COLLAPSE_FIELD)))
.execute()
.actionGet();
答案 0 :(得分:0)
我发现了这个问题。
我动态地向Constants.FTE_RANGES_AGGS添加了一个子聚合。 所以,我第一次称这段代码一切都很好。 但是下次我添加了相同名称的相同子集,因此错误"两个兄弟聚合不能具有相同的名称"。
因此,我必须重写它以使用Constant的副本或以不同的方式执行。