I'm using FOSElasticaBundle and Doctrine in my project, and my code works for the selective index update using the Doctrine lifecycle events. The issue I come up against is if I an update a related entity separately.
For example a person may be related to a company through a manytomany relationship. If I update the company name through company entity directly, then indexes for the person related to the company will be out of date and still relate to the company's old name.
I'm a bit lost as to how to handle this, does anyone have any suggestions? Do I have to rely on a scheduled index update and cope with inaccurate index data in the mean time, or is there a way I can call an update for entities related to the entity that has been updated.
I am relying on JMSSerializer groups to establish the mappings. I appreciate this might not be the best way to do things in the longterm.
with all comments and my research, I made a generic Gist for auto index child objects with fosElastica:
https://gist.github.com/Nightbr/ddb586394d95877dde8ed7445c51d973
In fact, I override the default Listener from FOSElastica and I add the function updateRelations($entity)
. We will search all relations linked to the $entity
and if there are indexed in ES (the ES type exists) it will update the related documents.
If anyone want to look at it and make any improvement it would be great! ^^
Thanks in advance
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With