2013-07-05 4 views
1

Я интегрирую FOSElasticaBundle в свой проект 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); 

Как я могу это сделать?

Благодаря

ответ

4

Попробуйте создать \Elastica\Query объект, который также содержит информацию о сортировке, а затем отправить это нашедшему:

$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 конечной точки (грани, сортировки, объяснить, и т.д ...) AbstractQuery представляет собой базовый тип для каждого из отдельных типов запросов (диапазон, нечеткие, термины и т. д.).

+0

Таким образом, я могу сортировать поля, кроме целочисленных. у тебя есть идеи? – parisssss

Смежные вопросы