Symfony和Elastic搜索升级

问题描述 投票:0回答:1

我必须从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]);

提前谢谢了。

symfony elasticsearch
1个回答
0
投票

上面代码中的主要问题是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]);
© www.soinside.com 2019 - 2024. All rights reserved.