首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Elastica查询排序工作?

如何使Elastica查询排序工作?
EN

Stack Overflow用户
提问于 2013-07-30 16:12:45
回答 1查看 1.9K关注 0票数 2

我试图将搜索结果排序,但我只使用以下代码获得未排序的结果(在本例中,我查询所有结果):

代码语言:javascript
复制
$query = new \Elastica\Query();
$query->setSort(array('id' => array('order' => 'desc')));
$resultSet = $type->search($query); // where $type is an elastica type object
$results = $resultSet->getResults();

作为参考,我将FOSElasticaBundle与一个Symfony2项目(使用$type = $this->container->get('fos_elastica.index.website.myType');)一起使用,但这不会有什么区别。

如果我直接使用http://localhost:9200/website/myType/_search?sort=id:desc&pretty=true在浏览器上进行查询,就会得到正确的排序结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-30 17:11:19

实际上,问题中给出的代码是正确的,它确实返回了正确排序的结果。

我遇到的问题与Elastica和问题中给出的代码无关。

原来,我在HTML中重新整理的结果是未排序的,因为我没有返回Elastica查询结果,而是从SQL数据库中返回从如下查询中获得的相应对象:

代码语言:javascript
复制
SELECT * FROM ...
WHERE id IN([ids from Elastica results in order])

上面的SQL查询不会按照" in“子句中给出的did的顺序返回结果,因此有必要重新排序SQL结果以与我的ElasticSearch结果的顺序相匹配(我使用了foreach语句)。如果我使用的是MySQL,我可以使用ORDER BY FIELD(id, \[ids in order\])获得与in子句中提供的ids相同的顺序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17952156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档