Вопрос о реках и синхронизации данных с производственной базой данных с помощью эластичного поиска:

  1. Подходят ли реки только для массовой загрузки данных изначально, или они каким-то образом отслеживают или отслеживают изменения.

  2. Если у меня есть ночной импорт данных, не лучше ли удалить реки и индексы, а также повторно проиндексировать и воссоздать реки?

  3. Если я обновляю или изменяю реку, мне нужно удалить и заново создать индекс?

  4. Как мне настроить расписание с рекой, чтобы периодически получать новые данные. Может ли он хранить последний maxid, чтобы он мог выполнять запросы diff в sql для выбора в реке?

  5. Есть ли предложения по улучшению синхронизации базы данных и эластичного поиска - без вызова отдельных функций обновления индекса с помощью команды PUT?

1
MonkeyBonkey 12 Сен 2014 в 01:17

2 ответа

Лучший ответ

Все реки Elasticsearch разные - некоторые из них предоставляются непосредственно Elasticsearch, многие другие разрабатываются третьими сторонами:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-plugins.html

Каждый работает по-своему, поэтому, чтобы ответить на ваши вопросы, вам нужно выбрать конкретную реку. В вашем случае, поскольку вы хотите индексировать данные из производственной базы данных, я предполагаю, что вы бы использовали реку JDBC:

https://github.com/jprante/elasticsearch-river-jdbc

Эта река будет индексировать данные из вашего источника JDBC, включая получение изменений. Он может делать это по расписанию (на этой странице есть подробная документация по параметру расписания: https: //github.com/jprante/elasticsearch-river-jdbc). Однако эта река не будет принимать удаления:

https://github.com/jprante/elasticsearch-river-jdbc/issues/213

Вы можете найти это обсуждение полезным, касающееся обхода отсутствия поддержки удаления с помощью ежедневного создания новой реки / индекса и использования псевдонимов индекса: ElasticSearch river JDBC MySQL не удаляет записи

2
Community 23 Май 2017 в 12:17

Вы можете просто сопоставить свой идентификатор в своей БД с _id с псевдонимом, таким образом эластичный будет определять, был ли документ изменен или нет.

0
tiagoribeirof 21 Июл 2016 в 10:47