Elasticsearch子集合未按预期工作

时间:2016-04-22 19:26:59

标签: elasticsearch

我正在尝试对term执行聚合,然后对结果测试执行子聚合以过滤日期范围内的结果。但是子聚合过滤器对搜索响应没有影响。搜索响应始终返回所有文档而不应用filter

例如:

TermsBuilder aggregationBuilders = AggregationBuilders.terms("form.id").field("form.id").size(0);
        aggregationBuilders.subAggregation(AggregationBuilders.filter("indexDate").filter(QueryBuilders.rangeQuery("indexDate").lte(date)));

1 个答案:

答案 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上的过滤器移至查询部分,以某种方式“解决了”此问题。这也适用于你的情况。