2015-03-31 2 views
0

Я и моя команда хочет использовать эластичный-поиск на нашем проекте, однако у нас есть требование, мы не хочет, чтобы использовать локальный экземпляр MySQL для каждого узла. Мы хотим использовать удаленный сервер данных mysql для хранения данных, которые запрашивают службы поиска.Упругий Поиск с использованием речного-JDBC для синхронизации данных с удаленным сервером MySQL

Итак, идея заключается в том, что каждый раз, когда новый элемент добавляется на локальный ES-сервер, он не добавляется к локальному экземпляру, а на удаленном сервере mysql (мы думаем об амазонке RDS). И для поискового запроса для любого индекса мы хотим, чтобы узел ES запрашивал удаленную базу данных (на экземпляре RDS).

Мы стараемся использовать реку-jbdc с двумя ароматами (рекой для вытягивания данных) и фидером (для размещения данных на экземпляре RDS). Но мы не можем заставить это работать с рекой-jdbc.

Кто-нибудь попробует что-то подобное? Или может ли кто-нибудь связать один блог, где это было сделано?

Я признателен за любую помощь

Заранее спасибо

ответ

1

Мы используем Двойники подход. Мы используем базу данных Oracle в качестве основного хранилища данных.

Мы используем PLSQL для сглаживания/преобразования данных. Для начальной загрузки мы добавляем данные (записи) в таблицу «onehot». Обновления данных будут сглаживаться/преобразовываться и вести записи в таблице «обновления». Таблицы onehot и update будут сопоставлены с одним индексом в Elasticsearch.

Начальная нагрузка ES:

[Oracle DB] ---> сплющивающиеся данные (PL SQL) -> [записей в таблице animal_oneshot_river, записи в таблице user_oneshot_river]

Данные будут выведены по реке до, например http://localhost/9200/zoo/animal и http://localhost/9200/zoo/user)

обновления

[Программное обеспечение] ----> Изменить данные ---> [Oracle DB] ---> сплющивающиеся данные (мн SQL) -> [записи в таблицу animal_update_river, записи в user_upd ate_river table]

Таблицы обновлений также содержат тип изменения (вставка, обновление или удаление).

Река Виль опрашивать таблицы update_river для обновления и мутирует данные в Elasticsearch (мы используем тянуть). Записи будут удалены после обработки рекой.

Данные об изменениях в Elasticsearch не отправляются в Oracle. Все изменения в первичном хранилище данных будут выполняться с помощью нашего собственного логического программного обеспечения.

Мы также записываем данные в таблицы _spare (animal_oneshot_river_spare), поскольку это позволяет перезагрузить Elasticsearch без простоев и без проблем синхронизации (мы переключаем aliasses после перезагрузки Elasticsearch).

+0

Спасибо за вашу помощь @Jasper наша главная цель - использовать речной плагин для перемещения данных из индексов elasticsearch в базу данных JDBC, я думаю, что это невозможно сделать с рекой. Поэтому нам нужно создать способ заполнения таблиц JDBC собственным кодом. и они используют реку для подачи индексов на поиск elastics – mastervv

Смежные вопросы