我正在尝试将过滤器组合成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?
由于
的Nik
答案 0 :(得分:1)
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);