Symfony и Elastic поисковое обновление - PullRequest
0 голосов
/ 31 августа 2018

Мне нужно обновить один из веб-сайтов моего клиента с Symfony 2.8 / Elastic Search 1.7 / FOS \astica-bundle "3.2 до 3.4 / 6.2 / 5.0.3.

Я сделал копию существующего веб-сайта на новом сервере с установленным Elastic Search 6.2.

Я много читал об этом и понял, что должен переписать Bundle, который управлял запросами Elastic, потому что многие методы устарели, особенно фильтры DSL.

Di у вас есть представление о том, каким будет следующий код (в контроллере Bundle) в ES 6.2:

$query = $request->query->get("query","");       
$finder = $this->container->get("fos_elastica.finder.scls_concert.concert");
$queryBuilder = new QueryBuilder();
$esTextQuery = $queryBuilder->query()->query_string($query);
$esDateFilter = $queryBuilder->filter()->range('date_start',array('gte' => (new \DateTime())->getTimestamp()));

$esQuery = $queryBuilder->query()->filtered($esTextQuery,$esDateFilter);
$result = $finder->findPaginated($esQuery,["size" => 5]);

Большое спасибо заранее.

1 Ответ

0 голосов
/ 31 августа 2018

Основная проблема в приведенном выше коде заключается в том, что запрос filtered пропущен и должен быть заменен на bool:

Так что я думаю, вы можете сделать что-то вроде этого:

$esDateFilter = new Range( 'date_start', array('gte' => (new \DateTime())->getTimestamp()) );

$esQuery = new BoolQuery();
$esQuery->addMust($esTextQuery);
$esQuery->addFilter($esDateFilter);
$result = $finder->findPaginated($esQuery,["size" => 5]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...