Для готового решения вы можете попробовать https://github.com/yougov/mongo-connector - однако для этого потребуется запустить набор реплик вместо одной базы данных.
Если вы хотитеЧем больше контроля, тем лучше было бы добавить код на уровне базы данных, который (синхронно или асинхронно) обновляет индексы ElasticSearch объектом, как только вы успешно сохраните его в MongoDB.Это также должно обрабатывать сбои / повторные попытки при обновлении индекса ES.
И наконец ... если вам нужно искать по всем моделям, возможно, вам следует подумать о том, как вымоделирование ваших данных / индексация их в ElasticSearch.
Например, если я хочу, чтобы мои пользователи могли искать имя, которое может быть любым из: [Провинция, Аттракцион, Еда, Фестиваль], тогда я мог бы создать индекс, который только содержит эти поля «name» + уникальные идентификаторы, которые указывают на объекты, которые они представляют.Возможно, для этого может быть полезен запрос multi_match .
Если пойти дальше (и при этом все же предполагать, что вам нужно искать только в поле «имя»), вы можете рассмотреть возможность сохранения только имени / идентификатора виндекс ElasticSearch, а затем получить полный объект из Mongo через его идентификатор.Гораздо меньше для индексации таким образом.