Elasticsearch subaggregation按预期工作
问题描述:
我试图在term
上执行聚合,然后在结果测试上执行子聚合以筛选日期范围内的结果。但是子聚合过滤器对搜索响应没有影响。搜索响应始终返回所有文档,但未应用filter
。Elasticsearch subaggregation按预期工作
例如:
TermsBuilder aggregationBuilders = AggregationBuilders.terms("form.id").field("form.id").size(0);
aggregationBuilders.subAggregation(AggregationBuilders.filter("indexDate").filter(QueryBuilders.rangeQuery("indexDate").lte(date)));
答
您需要使用filter
聚集周围的其他方法,即作为顶级聚集,然后你添加terms
聚集的子聚集。
TermsBuilder formBuckets = AggregationBuilders.terms("form.id")
.field("form.id")
.size(0);
FilterBuilder dateFilter = AggregationBuilders.filter("indexDate")
.filter(QueryBuilders.rangeQuery("indexDate").lte(date))
.subAggregation(formBuckets);
我看到你other question,你已经以某种方式通过indexDate
移动过滤器来查询部分“解决”这个问题。这也适用于你的情况。
感谢您的回复。是的,我通过做一个bool查询和范围查询来解决过滤问题。现在筛选工作和form.id上的聚合也可以,但不知何故顶级点击并不按预期工作。你能回顾一下 –