Indizierung Mysql-Datenbank mit elasticsearch
Ich habe vor kurzem angefangen auf der Suche ElasticSearch zu implementieren, suchen Sie in meinem
- Anwendung. Ich habe meine Datenbank in Mysql, die haben ca. >2 mn
Aufzeichnungen. Ich weiß, in sphinx, wir könnten einen index erstellen, der direkt auf eine
mysql Tabelle-Spalte. Ich wollte wissen, ob das möglich in Elasticsearch,
wenn auch nicht direkt, wie wir das umsetzen konnte, dass?
Dank
Mohit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine native Unterstützung (zu diesem Zeitpunkt) für mysql in Elastic Search, wie es ist, in der Sphinx.
Elastic Search ist eine gute option für die Suche, aber Sie werden wahrscheinlich haben, um einige benutzerdefinierte Arbeit auslösen, re-Indizierung der Elemente, wenn Sie ändern in der Datenbank. Genau wie das erreicht wird, hängt eine Menge auf Ihre Bewerbung. Elastic Search ist großartig in der Nähe von Echtzeit-Suche-Funktionalität, und ist nachgewiesen worden, unter schweren indizierungslast stülpt, reindexing, sollte nicht ein Anliegen für die meisten Anwendungen.
Den NoSQL-Bewegung scheint, gewinnt Dampf als gut. Einige Anwendungen mit Elastic Search als nur Daten speichern.
https://github.com/jprante/elasticsearch-river-jdbc tut. Sie können syncronize Daten aus der mysql-Quelle, mit Hilfe eines "operations-Tisch".
Es,s ein bisschen tricky ersten mal installieren, aber es funktioniert.
Zuerst müssen Sie das plugin zu installieren
Zweitens müssen Sie sich zum einrichten ( konfigurieren) die importierten Daten
pipelining-Fähigkeiten. Sie können Logstash zu sammeln, die Ihre Protokolle,
analysieren Sie in deine gewünschte format und speichern Sie diese für die Suche oder
monitoring für Ihre Anwendung.
Schritt-1: Download der aktuellen version des
elastic search
Schritt-2: Nach dem herunterladen logstasch installieren müssen, um jdbc-plugin
bin/plugin installieren, logstash-input-jdbc -
Schritt-3: Download mysql-jdbc-Treiber...als ich heruntergeladen und die Datei
name mysql-connector-java-5.1.36.jar. legen Sie diese Datei in
logstash/drivers/mysql-connector-java-5.1.36.jar ....Sie können es
überall wo Sie wollen. aber denken Sie daran den Pfad.
Schritt-4: erstellen Sie Nun eine db.conf-Datei und legen Sie es in logstash
directory...in meinem Fall logstash-2.3.2/logstash-jdbc.hier ist die conf
Inhalt:
input { jdbc { jdbc_driver_library => "/opt/logstash-2.3.2/drivers/mysql-connector-java-5.1.36.jar" jdbc_driver_class => "com.mysql.jdbc.Treiber" jdbc_connection_string => "jdbc:mysql://localhost/myapp_development" jdbc_user => "root" jdbc_password => "admin" Parameter => { "user_list" => "Benutzer" } schedule => "* * * * * " - Anweisung => "select name,email from users" } } Ausgang { elasticsearch { index => "Benutzer" document_type => "Benutzer" document_id => "%{123}" Host => "localhost:9200" } }
Jdbc Eingabe Parameter Beschreibung
jdbc_driver_library Vollständigen Pfad der jdbc-Bibliothek jdbc_driver_class JDBC
Treiber-Klasse laden, für MySQL ist es com.mysql.jdbc.Treiber
jdbc_connection_string JDBC mysql connection-string jdbc_user MySQL
Benutzer jdbc_password MySQL-Benutzer-Passwort-Zeitplan Ausführen, input-Anweisung
jeder Minuten. Verfügbar scheduling option-Anweisung MySQL-Anweisung
Parameter Parameter zu übergeben, MySQL-Anweisung
Jdbc-Output-Parameter Beschreibung
Parameter Beschreibung
index Elasticsearch-Index-name
document_type Elasticsearch Index-Typ.
document_id Id elastic search doc
Schritt-5:, die Jetzt abgeschlossen ist. wir müssen anfangen, logstart. bevor Sie beginnen elasicsearch
dann starten logstsh und geben es jadbc-db.conf-Datei für die Konfiguration $
cd-logstash-2.3.2 $ bin/logstash Agenten -f logstash-jdbc.conf
Nun testen Sie Ihre Daten schnell in elastic search
http://localhost:9200/users/users/_search
Danke Debs