我必须将客户的一个网站从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]);在此之前,非常感谢您。
发布于 2018-08-31 22:41:23
上面代码中的主要问题是需要用bool替换filtered query is gone和
所以我认为,你可以这样做:
$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]);https://stackoverflow.com/questions/52117592
复制相似问题