symfony - 如何从查询中获取总匹配

标签 symfony pagination elasticsearch elastica

我想使用symfony2的Elastica获取查询的总结果
我做了什么 :

$u = $this->container->get('fos_elastica.finder.documents_index.documents');
$maxItems=10;
$query = new \Elastica\Query\Bool();
$elasticaQuery = new \Elastica\Query\QueryString($key_words.'~');
$elasticaQuery->setFuzzyPrefixLength(3);
$query->addMust($elasticaQuery);
try {
        $q = new \Elastica\Query();
        $q->setQuery($query);
        $q->setFrom(($page - 1) * $maxItems);
    } 
catch (Exception $e) {
        }
$data = $u->find($q);

$ data始终是10个文档,但这不是问题,问题在于如何获得总匹配,因此我可以在分页中使用它们:)

最佳答案

Elastica \ ResultSet类具有一个名为getTotalHits()的方法,因此您可以在搜索后执行类似的操作,并获取合计/分页/等的完整记录数:

$hits = $resultSet->getTotalHits();

在此处查看源代码:Elastica ResultSet Class

顺便说一句,Elastica源代码的结构令人难以置信,易于阅读,这足以弥补其缺乏文档的不足。如果遇到困难,值得阅读源代码和单元测试。

关于symfony - 如何从查询中获取总匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933397/

相关文章:

mysql - Docker 中的 Symfony 3 - 奇怪的连接拒绝错误

php - 我可以在构建时更改 Form Class 操作吗?

javascript - UIkit.pagination 不是一个函数

node.js - 如何查询文档中应包含and子句的文档?

symfony - 如何在 “/api”文档api平台上添加我的自定义错误

Symfony 5 Heroku 无法从给定配置创建签名的 JWT

json - jqgrid 未定义整数?寻呼机未加载

java - JDBC分页: vendor specific sql versus result set fetchSize

Elasticsearch 查询多个子字段

elasticsearch - 如何从Elasticsearch中的嵌套数据类型查询中获取所有结果?