Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie integriere ich ElasticSearch mit MySQL?

Ab ES 5.x haben sie diese Funktion standardmäßig mit logstash Plugin.

Dadurch werden regelmäßig Daten aus der Datenbank importiert und auf den ES-Server übertragen.

Man muss eine einfache Importdatei wie unten angegeben erstellen (die auch hier ) und verwenden Sie logstash, um das Skript auszuführen. Logstash unterstützt die Ausführung dieses Skripts nach Zeitplan.

# 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

Sie können das MySQL-JAR von maven herunterladen hier .

Falls beim Ausführen dieses Skripts keine Indizes in ES vorhanden sind, werden sie automatisch erstellt. Genau wie ein normaler Post-Aufruf bei Elasticsearch