在 Elastica 中过滤全局聚合
Filtering global aggregation in Elastica
我使用 ruflin/Elastica 构建了弹性查询,并进行了全局聚合。是否可以以某种方式向其添加一些过滤器,与我的主要查询分开。
看起来是这样的:
$query = new Query($boolQuery);
$categoryAggregation = new Terms('category_ids');
$categoryAggregation->setField('category_ids');
$categoryAggregation->setSize(0);
$manufacturerAggregation = new Terms('manufacturer_ids');
$manufacturerAggregation->setField('manufacturer_id');
$manufacturerAggregation->setSize(0);
$globalAggregation = new GlobalAggregation('global');
$globalAggregation->addAggregation($categoryAggregation);
$globalAggregation->addAggregation($manufacturerAggregation);
$query->addAggregation($globalAggregation);
我想向 manufacturer_ids
和 category_ids
聚合添加一些自定义过滤器。目前,它们是从所有文档中汇总而来的。有什么办法可以通过 Elastica API 来实现,以便对其应用一些过滤吗?
我自己摸索出来的,如下:
$categoryAggregation = new Terms('category_ids');
$categoryAggregation->setField('category_ids');
$categoryAggregation->setSize(0);
$filter = new Filter('category_ids', $merchantIdQuery);
$filter->addAggregation($categoryAggregation);
$globalAggregation = new GlobalAggregation('global');
$globalAggregation->addAggregation($filter);
我使用 ruflin/Elastica 构建了弹性查询,并进行了全局聚合。是否可以以某种方式向其添加一些过滤器,与我的主要查询分开。
看起来是这样的:
$query = new Query($boolQuery);
$categoryAggregation = new Terms('category_ids');
$categoryAggregation->setField('category_ids');
$categoryAggregation->setSize(0);
$manufacturerAggregation = new Terms('manufacturer_ids');
$manufacturerAggregation->setField('manufacturer_id');
$manufacturerAggregation->setSize(0);
$globalAggregation = new GlobalAggregation('global');
$globalAggregation->addAggregation($categoryAggregation);
$globalAggregation->addAggregation($manufacturerAggregation);
$query->addAggregation($globalAggregation);
我想向 manufacturer_ids
和 category_ids
聚合添加一些自定义过滤器。目前,它们是从所有文档中汇总而来的。有什么办法可以通过 Elastica API 来实现,以便对其应用一些过滤吗?
我自己摸索出来的,如下:
$categoryAggregation = new Terms('category_ids');
$categoryAggregation->setField('category_ids');
$categoryAggregation->setSize(0);
$filter = new Filter('category_ids', $merchantIdQuery);
$filter->addAggregation($categoryAggregation);
$globalAggregation = new GlobalAggregation('global');
$globalAggregation->addAggregation($filter);