使用foselasticabundle请求添加过滤器

时间:2015-11-15 00:54:31

标签: symfony foselasticabundle

我有一个sf2服务,可以在带有foselasticabundle的elasticasearch服务器上发出搜索请求。最初我用过滤器提出了一个请求:

public function findAll()
{
    $query = new \Elastica\Query\MatchAll();
    $response = new \Elastica\Query\Filtered($query, self::setFilter());
    return $response;
}

public function setFilter()
{
    $filter = new \Elastica\Filter\Bool();
    $filter->addMust(new \Elastica\Filter\Term(array('active' => true)));
    return $filter;
}

在我的控制器中,我得到了这个请求的计数:

    $search = $this->get("mb.search");
    $query = $search->findAll();
    $nbOnline = $this->get("fos_elastica.index.xxxx.yy")->count($query);

此代码工作正常。我想添加一个基于数组的过滤器:

$languages = array(1,3,5)

我没有找到在我的查询中添加这个新过滤器的好方法。我希望你能在这个案子上帮助我。提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用“Terms”过滤器执行此任务,here is PHP实现。

你的代码应该是这样的:

new \Elastica\Filter\Terms(array('MY_FIELD' => array(1,3,5)))