2016-06-23 9 views
1

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が接続して相互作用できるようにします。

+0

出力をもっと見ることができるように、 '--debug'でlogstashを実行できますか?データベースホスト 'remotehostipnumber'に対してpingを実行できますか?あなたは、標準出力を使用している – Val

+0

ので、あなたはLogstashがデータを受信かどうかを確認すると、問題は、それが接続されているように見える--debug出力を見て – baudsp

+0

をElasticsearchするlogstashは、ログを取得するか、それらを送信しているかどうかを知ることができるはずです、私はまた、データベースホストにpingすることができます。本当にここにこだわった –

答えて

1

ここで、同様の問題に対する答えを探している人たちのために。

私のデータベースには、4メートルの行を持っていたし、それは1つのコマンドで処理するために/ elasticsearch/JDBCドライバlogstashのためにあまりにも多くをされている必要があります。

最初の転送を4つの別々の作業塊に分割した後、スクリプトが実行され、elasticsearch NoSQL dbに目的のテーブルが追加されました。

関連する問題