У меня есть служба sf2, чтобы сделать запрос на поиск на сервере resasearch с foselasticabundle. Initialy я сделал запрос с фильтром:добавить фильтры с запросом foselasticabundle
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)
я не нашел хороший способ слишком добавить новый фильтр в моем запросе. Надеюсь, вы можете помочь мне в этом деле. Заранее спасибо
спасибо, я добавить это на мой метод: $ фильтр-> addMust (новые \ Elastica \ Filter \ Термины (массив ('язык' => $ this- -> языки))); но теперь у меня есть ошибка. Предупреждение: тип нелегального смещения. 500 Внутренняя ошибка сервера. ContextErrorException. – Olivier
@Olivier. Я не ваша структура индекса. Не знаю, почему вы получаете эту ошибку. Попробуйте создать запрос к вашему индексу с помощью Sense плагин (Google chrome), а затем преобразовать его в PHP. – xurshid29
спасибо за вашу помощь, я нашел решение, хороший синтаксис - новый \ Elastica \ Filter \ Terms ('MY_FIELD', $ array) – Olivier