1

我有一个 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)

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

4

1 回答 1

2

您可以为此任务使用“术语”过滤器,这里是PHP 实现。

您的代码应如下所示:

new \Elastica\Filter\Terms(array('MY_FIELD' => array(1,3,5)))
于 2015-11-15T05:12:50.790 回答