же. Как и когда вы делаете синк в elastic? Допустим у меня основная база mongo или postgres. И для поиска у меня есть elastic. Мне нужно на добавление/удаления/апдейт делать синк в еластик. Какие есть оптимальные способы? Например сразу же в методах сервисов, или через eventEmitter делать event, а какой нибуть другой сервис слушает их и делает синк. Или хуки прям из бд использовать? Или через очереди типа kafka rebbit? Или еще что то?
Все зависит от того, какой рейт измнений в единицу времени и требованиям к доступности в поиске. 1. Если мало - в лоб, по крону выгребать по lastupdate и синкать в ES, раз в час например. 2. Если много или надо чтобы был малый лаг доступности: влепить emitter который будет складывать в RabbitMQ id / тип сущностей, которые обновились и надо синкать (insert|update|delete). Хуки из БД не рекомендую, у тебя все равно есть лаг индексации самого ES, а хуки некисло будут нагружать операции insert/delete
Если мало, то крон можно и раз в минуту, получаем актуальную бд в лагом в минуту
Обсуждают сегодня