Kể từ phiên bản ES 5.x, họ đã đưa tính năng này ra khỏi hộp với logstash cắm vào.
Thao tác này sẽ định kỳ nhập dữ liệu từ cơ sở dữ liệu và đẩy đến máy chủ ES.
Người ta phải tạo một tệp nhập đơn giản được cung cấp bên dưới (tệp này cũng được mô tả tại đây ) và sử dụng logstash để chạy tập lệnh. Logstash hỗ trợ chạy tập lệnh này theo lịch trình.
# 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
Bạn có thể tải xuống jar mysql từ maven tại đây .
Trong trường hợp các chỉ mục không tồn tại trong ES khi tập lệnh này được thực thi, chúng sẽ được tạo tự động. Cũng giống như một cuộc gọi đăng bài thông thường tớiasticsearch