「弾性検索の開始」チュートリアルを行っています。残念ながら、このチュートリアルはcsv
データベースをelasticsearchにインポートする最初のステップをカバーしていません。
私は解決策を見つけるためにグーグルで検索しましたが、残念ながら動作しません。ここに私が達成したいものと私が持っているものがあります:
インポートしたいデータを含むファイルがあります(簡略化)
id,title
10,Homer's Night Out
12,Krusty Gets Busted
logstash
を使用してインポートしたいと思います。インターネットで調査した結果、次の構成になります。
input {
file {
path => ["simpsons_episodes.csv"]
start_position => "beginning"
}
}
filter {
csv {
columns => [
"id",
"title"
]
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
workers => 1
}
}
ドキュメントタイプの指定に問題があるため、データをインポートして http:// localhost:9200/simpsons/episode/1 に移動すると、エピソード10で結果が表示されると予想されます。
よくやった、あなたはほとんどそこにいる、あなただけのドキュメントIDが欠落しています。次のようにelasticsearch
出力を変更する必要があります。
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
document_id => "%{id}" <---- add this line
workers => 1
}
この後、ID 10のエピソードをクエリできるようになります
GET http://localhost:9200/simpsons/episode/10
私は moshe/elasticsearch_loader の著者です
この正確な問題のためにESLを書きました。
pipでダウンロードできます。
pip install elasticsearch-loader
そして、次を発行することでcsvファイルをelasticsearchにロードできます:
elasticsearch_loader --index incidents --type incident csv file1.csv
さらに、--id-field=document_id
をコマンドラインに追加することにより、カスタムIDファイルを使用できます。