#java #mysql #jdbc #elasticsearch #elasticsearch-jdbc-river
#java #mysql #jdbc #elasticsearch #elasticsearch-jdbc-river
Вопрос:
Я запустил этот запрос, и он сработал хорошо.
curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "myaccount",
"password" : "myaccount",
"sql" : "select * from orders"
}
}'
Кажется, все проиндексировано. Однако, когда я изменил данные из таблицы Orders, изменения не отразили документ в ElasticSearch. Возможно ли автоматически синхронизировать обновленные / измененные данные?
Ответ №1:
Вам нужно добавить еще один параметр schedule
, чтобы указать jdbc-river периодически извлекать данные.
Вот ссылка на это.
Комментарии:
1. Что меня беспокоит, так это то, что опрос не будет масштабироваться, я искал триггер или что-то получше
2. Вы лучший судья масштабируемости опроса в вашем случае 🙂 Я боюсь, что afaik elasticsearch сам по себе не имеет возможности подписываться на события. Однако клиенты es, такие как tire для ruby, помогают присоединять перехваты к вашему orm, который отправляет дельта-обновления в es при сохранении в rdbms.
Ответ №2:
Я использую эластичный поиск в Windows 7. У меня проблема с загрузкой river-jdbc для синхронизации elasticsearch с mysql. Я пытаюсь загрузить все river-jdbc river, но результат :
Ошибка выполнения
[java.lang.NoClassDefFoundError:org/elasticsearch/rest/XcontentThrowableRestResponse], NoClassDefFoundError[org/elasticsearch/rest/XcontentThrowableRestResponse], ClassNotFoundExeption[org/elasticsearch/rest/XcontentThrowableRestResponse]
P / s: ОС: Window 7, elasticsearch 1.2.1, mysql-connector-java-5.1.25-bin.jar