FOSElasticaBundle和Doctrine Hydration

iLi*_*ast 9 symfony doctrine-orm elasticsearch foselasticabundle

我正忙着检查一下我正在开始的新项目的弹性搜索.我目前正在运行Symfony2.5,使用最新的FOSElasticaBundle以及所有这些.我正在对捆绑的性能做一些基准测试(我知道弹性本身非常快),但是我遇到了一个实际上很容易解决的小问题,如果只是捆绑的文档更冗长.

我的实际问题是如何,而不是返回一个Doctrine对象数组(我相信通过数据库查询填充),而不是从Elastica本身返回响应的"原始"数组?包括响应时间,最大分数等.FOSElasticaBundle的文档对这些主题非常模糊......

当你已经掌握了弹性的所有信息时,重新查询数据库似乎有点适得其反,而且速度慢?或者有一些非常明显的东西我在这里失踪了吗?

谢谢你的帮助!

iLi*_*ast 16

找到答案......一点点的睡眠可以让人看起来很长.

如果有其他人试图弄清楚这一点,经过整个hydrate: false事情和什么没有(顺便说一句,这与任何方式的问题无关).

只需使用该服务:

$this->get('fos_elastica.index.app.foo')->search($query) 获取Elastica Type实例.

$this->get('fos_elastica.finder.app.foo')->find($query) 获取一系列Doctrine实体.

希望这有助于某人.

  • @iLikeBreakfast确实可以使用索引服务.但这意味着您将无法使用在查找程序中实现的分页.我们通过创建自己的查找服务解决了这个问题.在实例化它时,我们插入自己的elasticaToModel变换器.这个变换器只是ORM ElasticaToModelTransformer的一个实现,但我们添加了一个额外的setter来使用Doctrine对象禁用水合作用.相反,我们只返回Elastica结果对象的数据数组. (3认同)