Какую стратегию синхронизации данных в базе и elasticsearch вы делаете?
Привет.
Хотел узнать какую стратегию поддержания актуальных данных в elastic-e вы предпочитаете?
вариант 1)
- создал индекс один раз
- при любом CRUD над данными в БД , шлется соответствующий запрос в эластик
Минус тут, что придется весь этот код навешивать, плюс вдруг не дойдет запрос, тогда рассинхрон
вариант 2)
- на уровне базы сечь что было проиндексировано, а что требует обновление в индексе - timestamp-ом например
- а уже по крону, вот эти "статьи", требующие актуализации, обновлять. Delete правда тут выпадает, если реально из базы удалять, а не soft delete , когда просто помечается удаленным
вариант 3)
- использую алиас для индекса, и поиск через него
- по крону , например раз в сутки: создаю новый индекс, наполняю его всеми данными (через _bulk api), когда это готово, переключаю алиас на него, а старый индекс удаляю
- плюсы тут что просто это сделать, без кучи кода, не надо следить за чем то, использовать crud api, но актуальность для измененных данных в течении дня не соблюдается.
p.s. возьмем не какой то проект с миллиардами данных, кто знает что там за подводные камни, а попроще - например на новостном сайте или магазине , где не сильно много "статей"/товаров