FOSElasticaBundle订单查询

时间:2013-07-05 10:41:36

标签: elasticsearch

我在我的Symfony 2.3项目中集成了FOSElasticaBundle,我需要按价格属性对结果进行排序。

这是我的代码:

   $finder     = $this->container->get('fos_elastica.finder.website.product');
   $fieldTerms = new \Elastica\Query\Terms();
   $fieldTerms->setTerms('taxon_ids', $taxon_ids_array);
   $boolQuery->addMust($fieldTerms);

   $resultSet = $finder->find($boolQuery);

我怎么能这样做?

由于

1 个答案:

答案 0 :(得分:4)

尝试创建一个包含排序信息的\Elastica\Query对象,然后将其发送给finder:

$finder = $this->container->get('fos_elastica.finder.website.product');

$fieldTerms = new \Elastica\Query\Terms();
$fieldTerms->setTerms('taxon_ids', $taxon_ids_array);
$boolQuery->addMust($fieldTerms);

$finalQuery = new \Elastica\Query($boolQuery);

$finalQuery->setSort(array('price' => array('order' => 'asc')));

$resultSet = $finder->find($finalQuery);

查看at the elasticsearch docs on the sort parameter,了解如何正确使用它。

注意:\Elastica\Query\Elastica\Query\AbstractQuery完全不同,第一个封装了您可以发送到_search API端点的所有内容(方面,排序,解释等...){ {1}}表示每种查询类型的基本类型(范围,模糊,术语等)。