如何在FOSElasticabundle中使用scroll滚动查询并获取结果
FOSElasticaBundle Scroll滚动查询结果获取方案
你现有代码已经完成了scroll查询的基础配置,只需要遍历scroll()方法返回的迭代器即可拿到所有查询结果:
核心调用方法
scroll()方法返回的是FOS\ElasticaBundle\Pagerfanta\ScrollPagerfanta实例,属于可迭代对象,直接遍历就能分批拿到查询结果,你也可以主动调用getCurrentPageResults()方法获取当前批次的结果集。
完整可用示例
// 你的原有初始化逻辑 $res = $this->commentIndex->createSearch($query, ['scroll' => '1m']); $res->addType('reading'); $scrollIterator = $res->scroll(); // 遍历获取全量结果 foreach ($scrollIterator as $currentPage) { // 遍历当前批次的每条结果 foreach ($currentPage as $resultItem) { // $resultItem即为映射后的实体对象,可直接输出处理 print_r($resultItem); } }
常用扩展用法
- 若需要获取ES原始返回的数组数据,不需要ORM实体映射,初始化时添加
hydrate参数即可:$res = $this->commentIndex->createSearch($query, ['scroll' => '1m', 'hydrate' => false]); - 若需要手动获取当前批次的原始响应内容,调用
$currentPage->getResponse()->getData()即可。
内容的提问来源于stack exchange,提问作者user3818576
相关产品推荐
相关产品推荐

