我正在尝试为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的聚合。
如何在过滤器之间进行“与”运算?
谢谢
尼克
最佳答案
这是每个documentation的Filters-Aggergation
a的预期行为
如果您需要两个过滤器的AND
,则可以将aggregation-filter和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);
关于php - FilterAggregation无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35772530/