Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zintegrować ElasticSearch z MySQL?

Od wersji ES 5.x udostępnili tę funkcję po wyjęciu z pudełka za pomocą schowek podłącz.

Będzie to okresowo importować dane z bazy danych i przesyłać je na serwer ES.

Należy stworzyć prosty plik importu podany poniżej (który jest również opisany tutaj ) i użyj logstash do uruchomienia skryptu. Logstash obsługuje uruchamianie tego skryptu zgodnie z harmonogramem.

# 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

Możesz pobrać słoik mysql z maven tutaj .

W przypadku, gdy indeksy nie istnieją w ES podczas wykonywania tego skryptu, zostaną one utworzone automatycznie. Zupełnie jak zwykłe wywołanie posta do Elasticsearch



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL (MySQL) a NoSQL (CouchDB)

  2. Jak zainstalować MySQLdb (biblioteka dostępu do danych Pythona do MySQL) na Mac OS X?

  3. Pobieranie tylko ustalonej liczby wierszy w MySQL

  4. Czy indeks na Varchar ma wpływ na wydajność?

  5. rake db:create - problemy z sortowaniem