От ES 5.x те са предоставили тази функция от кутията с logstash плъгин.
Това периодично ще импортира данни от базата данни и ще изпраща към ES сървър.
Човек трябва да създаде прост файл за импортиране, даден по-долу (който също е описан тук ) и използвайте logstash, за да стартирате скрипта. Logstash поддържа изпълнение на този скрипт по график.
# file: contacts-index-logstash.conf
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "user"
jdbc_password => "pswd"
schedule => "* * * * *"
jdbc_validate_connection => true
jdbc_driver_library => "/path/to/latest/mysql-connector-java-jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
statement => "SELECT * from contacts where updatedAt > :sql_last_value"
}
}
output {
elasticsearch {
protocol => http
index => "contacts"
document_type => "contact"
document_id => "%{id}"
host => "ES_NODE_HOST"
}
}
# "* * * * *" -> run every minute
# sql_last_value is a built in parameter whose value is set to Thursday, 1 January 1970,
# or 0 if use_column_value is true and tracking_column is set
Можете да изтеглите mysql jar от maven тук .
В случай, че индекси не съществуват в ES, когато този скрипт се изпълнява, те ще бъдат създадени автоматично. Точно като обикновено извикване след публикация към elasticsearch