Лучший способ синхронизации Elasticsearch с Mysql
Я использую elasticsearch
в моем проекте spring web mvc (spring-data-elasticsearch) и для синхронизации с базой данных (MySQL).
Я индексирую документ из своего приложения, если какой-либо новый объект собирается добавить в таблицы БД в то же время, из уровня сервиса, я прошу индексировать этот документ в elasticsearch также.
обе таблицы БД и индекс elasticsearch имеют одинаковые данные и для удаления и обновления операции на Я использую ту же концепцию, выполняя операцию изменения на elasticsearch и таблица db, она работает нормально.
теперь я хочу знать, что будет disadvantages
этого подхода.
или есть ли лучший способ сделать наш индекс elasticsearch актуальным из БД. Я использовал logstash, но как насчет удаленных объектов
1 ответов
недостатком синхронной индексации является отсутствие повторной попытки при возникновении ошибки при создании индексных данных.
на вашем месте я создам cronjob / batch ( для триггера это зависит от того, сколько данных обновляется и насколько важно обновление индекса ) и это задание будет иметь статус выполнения с logs
У вас будет четкое представление о вашем индексе и отсутствующих данных
и для индексов вы можете режим полного индекса и режим обновления индексов ( вы должны добавить дату обновления в свои таблицы)
стратегия индексирования у вас есть два этапа, и вы можете выбрать TWO_PHASES : вам нужен master & slave ==> при выполнении индексирования на master slave будет отвечать на запросы, и когда индексирование закончится, вы синхронизируете DIRECT_MODE : drop index & create new one