FilterAggregation 没有按预期工作

FilterAggregation don't work as expect

我正在尝试为 FilterAggregation 组合过滤器。这里的例子:

$agg = new Elastica\Aggregation\Filters('size');

$filter1 = new Elastica\Query\Terms();       
$filter1->setTerms('color', $color);

$filter2 = new Elastica\Query\Terms();
$filter2->setTerms('material', $material);

$agg->addFilter($filter1);
$agg->addFilter($filter2);

这里的问题是,ElasticSearch 没有组合过滤器并给我一个包含 2 个元素的数组,其中每个过滤器都被聚合但不是来自两个过滤器的 AND 聚合。

过滤器之间如何做AND?

谢谢

尼克

这是 Filters-Aggergation 的预期行为 documentation

Defines a multi bucket aggregations where each bucket is associated with a filter. Each bucket will collect all documents that match its associated filter.

如果您想要 AND 两个过滤器,您可以使用 aggregation-filter along with bool-query

示例:

$agg = new Elastica\Aggregation\Filter('size');

$filter1 = new Elastica\Query\Terms();       
$filter1->setTerms('color', $color);  
$filter2 = new Elastica\Query\Terms();    
$filter2->setTerms('material',$material);

$boolQuery = new Elastica\Query\BoolQuery();
$boolQuery->addFilter($filter1);  
$boolQuery->addFilter($filter2);

$agg->setFilter($boolQuery);