2017-05-23 3 views
0

私はelasticaバンドルでsymfony2プロジェクトをインストールしました。elasticsearchは実行中です。 fos_elasticaを設定して、エンティティ(例の車)がelasticsearchで自動的に再インデックスされるようにしました。 すべて正常に動作します。ここでSymfony2/Elastica-bundle

は、それがどのように動作するかです:エンティティがデータベースに保存されたときに、私のコントローラで

$em->flush(); 

そして、それはContainerAwareEventManager.phpで

$this->dispatchPostFlushEvent(); 

、今を呼び出します(ディスパッチイベント()内の)弾性検索でエンティティを再インデックスするイベントを発生させるメソッドディスパッチイベントを見つけることができます

私がやることを期待私は、使用のこの種の意味はなく手動の自動に

このイベントを発生させている。

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

それとも

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

を誰かが行う簡単な方法を参照してくださいんそのようなこと ?

私はdispatchEventを調べることに努めています。

すべてのヘルプは参考になります。) Thxを

答えて

1

FOSElasticaBundlepostFlushイベントに更新を送信するイベントリスナを実装します。

スケジュールされた(永続性、更新性または削除性の)エンティティ(例としてFOS\ElasticaBundle\Doctrine\Listenerを見ることができます)に関する情報を収集する独自のイベントリスナーと、独自のイベントを捕捉するイベントリスナーあなたは手動で発射し、更新をESに送信します(FOS\ElasticaBundle\Persister\ObjectPersister経由)。

また、this exampleをご覧ください。