如何从Query获取totalhits

时间:2014-02-21 11:36:35

标签: symfony pagination elasticsearch elastica


我想获得使用elastica for symfony2的查询的总结果 我做了什么:

$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个文件,但这不是问题,问题是如何获得总命中数,所以我可以在分页中使用它们。

1 个答案:

答案 0 :(得分:0)

Elastica \ ResultSet类有一个名为getTotalHits()的方法,所以你可以在搜索后做这样的事情并得到总数/分页/等的完整记录数:

$hits = $resultSet->getTotalHits();

请参阅此处的源代码:Elastica ResultSet Class

另外,Elastica源代码结构非常合理且易于阅读,这足以弥补其缺乏文档的问题。如果你遇到困难,非常值得阅读源代码和单元测试。