MySQLテーブルをElasticsearchにインポートしようとしています。これは、8桁のVARCHARを主キーとして設定した10個の異なるカラムを含むテーブルです。 MySQLデータベースはリモートホスト上にあります。Mysql to Elasticsearch - インデックスおよびエクスポートデータを作成しません
MySQLからElasticsearchにデータを転送するには、Logstashとjdbc MySQLドライバを使用することにしました。
Logstashが私用のインデックスを作成すると仮定します。
ここに私のlogstash.confスクリプトがあります:、Elasticsearch出力をlogstash.confスクリプトを実行するときにも
sudo /opt/logstash/bin/logstash --configtest -f /home/user/logstash/logstash.conf
:
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 }
}
logstashコンフィグテストを実行している、それは '構成ガイドOK' というメッセージを出力します。
Settings: Default filter workers: 1
Logstash startup completed
しかし、インデックスが作成されたかどうかを確認するときまた、追加されました:
curl -XGET 'localhost:9200/tables/table/_search?pretty=true'
を私が取得:
{
"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
}
インデックスが作成されていないデータの背後にある潜在的な理由から何ができますか?
PS。私は、別のターミナルウィンドウでElasticsearchサーバーを稼働させておき、Logstashが接続して相互作用できるようにします。
出力をもっと見ることができるように、 '--debug'でlogstashを実行できますか?データベースホスト 'remotehostipnumber'に対してpingを実行できますか?あなたは、標準出力を使用している – Val
ので、あなたはLogstashがデータを受信かどうかを確認すると、問題は、それが接続されているように見える--debug出力を見て – baudsp
をElasticsearchするlogstashは、ログを取得するか、それらを送信しているかどうかを知ることができるはずです、私はまた、データベースホストにpingすることができます。本当にここにこだわった –