【问题标题】:FOSElasticaBundle and Doctrine HydrationFOSElasticaBundle 和 Doctrine Hydration
【发布时间】:2014-06-05 20:58:42
【问题描述】:

我正忙着为我开始的一个新项目检查 elasticsearch。我目前正在运行 Symfony2.5,带有最新的 FOSElasticaBundle 等等。我正在对捆绑包的性能进行一些基准测试(我知道弹性本身非常快),但我遇到了一个实际上很容易解决的小问题,如果捆绑包的文档更详细的话。

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

当您已经从 elastic 中获得了所有要查找的信息时,必须重新查询数据库似乎有点适得其反并且速度很慢?还是我在这里遗漏了一些非常明显的东西?

感谢您的帮助!

【问题讨论】:

    标签: symfony doctrine-orm elasticsearch foselasticabundle


    【解决方案1】:

    找到答案... 一点点睡眠似乎可以让一个人走很长的路。

    如果其他人试图弄清楚这一点,在经历了整个 hydrate: false 之后,什么不是(顺便说一句,这与这个问题没有任何关系)。

    只需使用服务:

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

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

    希望这对某人有所帮助。

    【讨论】:

    • 您是否知道是否可以在自定义 FOSElastica 存储库中以某种方式检索 JSON 结果?
    • @Zap,elastica 应该只返回一个值数组,包括总点击次数、时间等。运行直接 curl 查询时会得到的大部分内容。如果你真的想要,你总是可以在返回值上使用 json_encode,但我真的不明白你为什么想要那个。
    • @iLikeBreakfast 确实可以使用索引服务。但这意味着您将无法使用在查找器中实现的分页。我们通过创建自己的查找器服务解决了这个问题。在实例化它时,我们插入我们自己的 elasticaToModel 转换器。这个转换器只是 ORM ElasticaToModelTransformer 的一个实现,但我们添加了一个额外的设置器来禁用使用 Doctrine 对象的水合。相反,我们只是从 Elastica 结果对象中返回一个数据数组。
    • 请问您在哪里找到的?我目前正在对此进行研究,并希望了解更多信息。
    • 该服务由 FOSElasticaBundle 动态构建。使用 PHPStorm + Symfony 插件,您只需执行$this->get(',按 Ctrl+Space 即可获取可用服务。
    猜你喜欢
    • 2016-09-20
    • 2021-06-24
    • 1970-01-01
    • 2014-03-17
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多