【发布时间】:2014-03-17 00:04:42
【问题描述】:
我在我的项目中使用 FOSElasticaBundle 来搜索我的 Player 实体。由于我只想在值 1 上搜索属性为 isactive 的实体,因此我遵循了有关“过滤结果和执行默认查询”的文档:FriendsOfSymfony/FOSElasticaBundle/README.md
$query = new \Elastica\Query\QueryString($searchterm);
$term = new \Elastica\Filter\Term(array('isactive' => true));
$filteredQuery = new \Elastica\Query\Filtered($query, $term);
$players = $this->get('fos_elastica.finder.xxx.player')->find($filteredQuery);
我的包的配置如下:
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
serializer:
callback_class: FOS\ElasticaBundle\Serializer\Callback
serializer: serializer
indexes:
xxx:
client: default
types:
player:
mappings:
firstname: { boost: 3 }
lastname: { boost: 3 }
serializer:
groups: [elastica, Default]
persistence:
driver: orm
model: xxx\FrontendBundle\Entity\Player
listener: ~
provider: ~
finder: ~
现在我想做一些排序并用限制和偏移量减少结果。我怎样才能做到这一点?
我找到了类似的解决方案
$finalQuery = new \Elastica\Query($boolQuery);
$finalQuery->setSort(array('price' => array('order' => 'asc')));
但我没有 Elastica\Query 对象,并且 AbstractQuery 不支持这种方法。与
相同$elasticaQuery->addSort($sort);
怎么办?在哪里读?? ://
(此外,如果我们已经在这里:{boost: 3} 究竟做了什么?)
【问题讨论】:
-
boost 用于在 Elasticsearch 搜索 elastic.co/guide/en/elasticsearch/guide/current/… 时更加重视某个领域
标签: symfony elasticsearch foselasticabundle