elasticsearch,Symfony,elasticsearch" /> elasticsearch,Symfony,elasticsearch" />

Symfony和弹性搜索升级

Symfony和弹性搜索升级,symfony,elasticsearch,Symfony,elasticsearch,我必须将客户的一个网站从Symfony 2.8/Elastic Search 1.7/FOS\elastica bundle“3.2升级到3.4/6.2/5.0.3 我已经在安装了Elastic Search 6.2的全新服务器上复制了现有网站 我读过很多关于这方面的书,并且明白我必须重写管理弹性查询的包,因为很多方法已经过时,特别是DSL过滤器 Di您是否知道以下代码(在捆绑包控制器中)将在ES 6.2中变成什么: $query = $request->query->get("qu

我必须将客户的一个网站从Symfony 2.8/Elastic Search 1.7/FOS\elastica bundle“3.2升级到3.4/6.2/5.0.3

我已经在安装了Elastic Search 6.2的全新服务器上复制了现有网站

我读过很多关于这方面的书,并且明白我必须重写管理弹性查询的包,因为很多方法已经过时,特别是DSL过滤器

Di您是否知道以下代码(在捆绑包控制器中)将在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]);

非常感谢。

上述代码中的主要问题是,和需要被
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]);

恐怕下面这行也错了,因为不再支持DSL筛选器:$esDateFilter=$queryBuilder->filter()->range('date_start',array('gte'=>(new\DateTime())->getTimestamp());尝试简单地删除
filter()
,查看我的更新答案不起作用,仍然不支持“DSL”筛选器“错误。我也可以将$bool替换为$esQuery.Looks更好的代码:$esDateFilter=new Range('date\u start',array('gte'=>(new\DateTime())->getTimestamp());非常感谢你的帮助,瓦尔,我真的很感激!