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);
我正在尝试为 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);