2017-04-06 58 views
1

我用ruflin/Elastica和全局聚合构建了弹性查询。是否有可能以某种方式添加一些过滤器,从我的主要查询分开。在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_idscategory_ids聚合。目前它们是从所有文档汇总而来的。有没有什么办法通过Elastica API来完成它,以便它对它应用一些过滤?

回答

1

我发现我自己通过试验和错误,这是不言而喻如下:

$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);