web-dev-qa-db-ja.com

csvをelasticsearchにインポートします

「弾性検索の開始」チュートリアルを行っています。残念ながら、このチュートリアルは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で結果が表示されると予想されます。

20
adelura

よくやった、あなたはほとんどそこにいる、あなただけのドキュメント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
16
Val

私は 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ファイルを使用できます。

3
MosheZada