我正在尝试对term
执行聚合,然后对结果测试执行子聚合以过滤日期范围内的结果。但是子聚合过滤器对搜索响应没有影响。搜索响应始终返回所有文档而不应用filter
。
例如:
TermsBuilder aggregationBuilders = AggregationBuilders.terms("form.id").field("form.id").size(0);
aggregationBuilders.subAggregation(AggregationBuilders.filter("indexDate").filter(QueryBuilders.rangeQuery("indexDate").lte(date)));
答案 0 :(得分:1)
您需要反过来使用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
上的过滤器移至查询部分,以某种方式“解决了”此问题。这也适用于你的情况。