Автоматическая синхронизация ElasticSearch с SQL

#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