我正在尝试为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的聚合。

如何在过滤器之间进行“与”运算?

谢谢

尼克

最佳答案

这是每个documentationFilters-Aggergation a的预期行为



如果您需要两个过滤器的AND,则可以将aggregation-filterbool-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/

10-10 17:48