【问题标题】:Symfony2 / Elastica-bundleSymfony2 / Elastica-bundle
【发布时间】:2017-05-23 15:58:41
【问题描述】:

我刚刚安装了一个带有 elastica 包的 symfony2 项目,elasticsearch 正在运行。 我已经配置了 fos_elastica,以便我的实体(例如汽车)将在 elasticsearch 中自动重新索引。 一切正常。

这是它的工作原理:

在我的控制器中

$em->flush();

那么当实体被持久化到数据库中时,它会调用

$this->dispatchPostFlushEvent();

现在在 ContainerAwareEventManager.php 中,我可以找到方法调度事件,该事件将引发事件以在弹性搜索中重新索引实体(在 dispatchEvent() 中)

我期望做的是手动而不是自动引发此事件

我的意思是这种用法:

$em->flush();
$em->flushAndReindexEs();

或者

$em->flush()
$this->raiseEvent('reindex-elastic-entity', $em, array('title' => 'string')

有没有人发现做这种事情的简单方法?

我继续调查 dispatchEvent。

任何帮助都会有所帮助;) 谢谢

【问题讨论】:

    标签: symfony elasticsearch foselasticabundle


    【解决方案1】:

    FOSElasticaBundle 实现事件侦听器,用于发送postFlush 事件的更新。

    因此,您需要实现自己的事件侦听器,该侦听器将收集有关计划(用于持久化、更新或删除)实体的信息(您可以查看FOS\ElasticaBundle\Doctrine\Listener 作为示例)以及将捕获您自己的事件侦听器您将手动触发的事件——并将更新发送到 ES(通过FOS\ElasticaBundle\Persister\ObjectPersister)。

    你也可以看看this example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多