sql >> Database >  >> RDS >> Mysql

Hoe ElasticSearch integreren met MySQL?

Vanaf ES 5.x hebben ze deze functie direct uit de doos gegeven met logstash inpluggen.

Dit zal periodiek gegevens uit de database importeren en naar de ES-server pushen.

Men moet een eenvoudig importbestand maken dat hieronder wordt gegeven (dat ook hier ) en gebruik logstash om het script uit te voeren. Logstash ondersteunt het uitvoeren van dit script volgens een schema.

# 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

U kunt de mysql-jar downloaden van maven hier .

Als er geen indexen bestaan ​​in ES wanneer dit script wordt uitgevoerd, worden ze automatisch aangemaakt. Net als een normale oproep naar elasticsearch



  1. IDEF1X Notatie

  2. Is het mogelijk om Crosstab/Pivot Query in MySQL te gebruiken?

  3. Hoe JSON-tekenreeks op te slaan in MySQL db

  4. Hoe moet ik GUID opslaan in MySQL-tabellen?