Ich versuche, eine MySQL-Tabelle in Elasticsearch zu importieren. Es ist eine Tabelle, die 10 verschiedene Spalten mit einem 8-stelligen VARCHAR-Satz als Primärschlüssel enthält. Die MySQL-Datenbank befindet sich auf einem Remote-Host.Mysql zu Elasticsearch - Index nicht erstellen und Daten exportieren
Um Daten von MySQL in Elasticsearch zu übertragen, habe ich mich entschieden, Logstash und jdbc MySQL Treiber zu verwenden.
Ich gehe davon aus, dass Logstash den Index für mich erstellen wird, wenn es nicht da ist.
Hier ist mein logstash.conf Skript:
input{
jdbc {
jdbc_driver_library => "/home/user/logstash/mysql-connector-java-5.1.17-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://[remotehostipnumber]/databasename"
jdbc_validate_connection => true
jdbc_user => "username"
jdbc_password => "password"
schedule => "* * * * *"
statement => "select * from table"
}
}
output
{
elasticsearch
{
index => "tables"
document_type => "table"
document_id => "%{table_id}"
hosts => "localhost:9200"
}stdout { codec => json_lines }
}
Wenn logstash Config-Test läuft es gibt 'Configration OK' Nachricht:
sudo /opt/logstash/bin/logstash --configtest -f /home/user/logstash/logstash.conf
Auch wenn die Ausführung des logstash.conf Skript, Elasticsearch Ausgänge:
Settings: Default filter workers: 1
Logstash startup completed
Aber wenn ich gehe, um zu überprüfen, ob der Index erstellt wurde und dat a wurde auch hinzugefügt:
curl -XGET 'localhost:9200/tables/table/_search?pretty=true'
ich:
{
"error" : {
"root_cause" : [ {
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "tables",
"index" : "table"
} ],
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "tables",
"index" : "tables"
},
"status" : 404
}
Was hinter den Daten die möglichen Gründe nicht indiziert werden könnte?
PS. Ich lasse den Elasticsearch-Server im separaten Terminal-Fenster laufen, um sicherzustellen, dass Logstash sich damit verbinden und interagieren kann.
Können Sie logstash mit '--debug' ausführen, damit Sie mehr Ausgabe sehen können? Können Sie Ihren Datenbank-Host 'remotehostipnumber' anpingen? – Val
Da Sie die Ausgabe von stdout verwenden, sollten Sie prüfen können, ob Logstash die Daten empfängt und ob logstash die Logs abruft oder an Elasticsearch – baudsp
sendet und dabei die --debug-Ausgabe betrachtet, die aussieht, als wäre sie verbunden Ich kann auch den Datenbank-Host anpingen. Wirklich hier feststecken –