我必须从Symfony 2.8 / Elastic Search 1.7 / FOS \ elastica-bundle“3.2到3.4 / 6.2 / 5.0.3升级我的客户的一个网站。
我已经在安装了Elastic Search 6.2的全新服务器上制作了现有网站的副本。
我已经阅读了很多关于这一点,并且理解我必须重写管理Elastic查询的Bundle,因为很多方法已经过时,特别是DSL过滤器。
你知道下面的代码(在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]);
提前谢谢了。
上面代码中的主要问题是filtered
query is gone并且需要由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]);