1

foselasticabundleを使用してelasticasearchサーバーで検索リクエストを行うsf2サービスがあります。最初に、フィルターを使用してリクエストを作成しました:

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

このタスクには " Terms " フィルターを使用できます。PHP の実装は次のとおりです

コードは次のようになります。

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