У меня есть приложение, которое использует RSS-каналы и делает их доступными для поиска, выполнив следующие шаги:
- извлечение статьи из URL-адреса фида
- хранение этих данных в реляционной БД
- индексация данных в Elasticsearch
Я хочу обратить этот процесс вспять, чтобы использовать плагин RSS River Elasticsearch для извлечения данных из кормит. Однако этот плагин интегрируется напрямую с Elasticsearch, минуя мою реляционную БД (что является проблемой для других частей приложения, которые полагаются на каждую статью, имеющую запись в БД).
Как сделать так, чтобы Elasticsearch уведомлял БД, когда новая статья была проиндексирована (и удалена из индекса)?
Изменить
В настоящее время я использую Ruby on Rails 4 с БД PostgreSQL. Каналы RSS загружаются в фоновом режиме с помощью Sidekiq для управления заданиями. Они попадают прямо в PG, а затем индексируются Elasticsearch. Я использую Chewy, чтобы обеспечить интерфейс для индекса ES. Он не поддерживает обратные вызовы, как я ищу (ни одна библиотека Ruby не делает afaik?).
Поиск запрашивает ES для совпадений, затем загружает записи из PG для отображения результатов.