我在我的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);
我怎么能这样做?
由于
答案 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}}表示每种查询类型的基本类型(范围,模糊,术语等)。