私はElasticsearchを初めて使用し、この時点まで手動でデータを入力しています。たとえば、私はこのようなことをしました:
$ curl -XPUT 'http://localhost:9200/Twitter/Tweet/1' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}'
これで.jsonファイルができました。これをElasticsearchにインデックス付けします。私もこのようなことを試しましたが、成功しませんでした:
curl -XPOST 'http://jfblouvmlxecs01:9200/test/test/1' -d lane.json
.jsonファイルをインポートするにはどうすればよいですか?マッピングが正しいことを確認するために最初に実行する必要がある手順はありますか?
Curlでファイルを使用する場合の正しいコマンドは次のとおりです。
curl -XPOST 'http://jfblouvmlxecs01:9200/test/test/1' -d @lane.json
Elasticsearchはスキーマレスであるため、必ずしもマッピングは必要ありません。 jsonをそのまま送信し、デフォルトのマッピングを使用する場合、すべてのフィールドは 標準アナライザー を使用してインデックス付けおよび分析されます。
コマンドラインを介してElasticsearchとやり取りしたい場合は、 elasticshell をご覧ください。curlよりも少し便利です。
現在のドキュメントによると、 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html :
Curlにテキストファイル入力を提供する場合、プレーンな-dの代わりに--data-binaryフラグを使用する必要があります。後者は改行を保持しません。
例:
$ curl -s -XPOST localhost:9200/_bulk --data-binary @requests
このタイプのことのための小さなツールを作成しました https://github.com/taskrabbit/elasticsearch-dump
KenHの答えに追加する
$ curl -s -XPOST localhost:9200/_bulk --data-binary @requests
@requests
を@complete_path_to_json_file
に置き換えることができます
注:ファイルパスの前に@
が重要です
私はjsonファイルと同じディレクトリにいることを確認し、単にこれを実行しました
curl -s -H "Content-Type: application/json" -XPOST localhost:9200/product/default/_bulk?pretty --data-binary @product.json
したがって、同じディレクトリにいることを確認して、この方法で実行することもできます。注:コマンドのproduct/default /は、私の環境に固有のものです。省略したり、自分に関係のあるものに置き換えたりできます。
https://www.getpostman.com/docs/environments から郵便配達員を取得するだけで、/ test/test/1/_bulk?prettyコマンドでファイルの場所を指定します。
私はelasticsearch_loaderの著者です
この正確な問題のためにESLを書きました。
Pipでダウンロードできます:
pip install elasticsearch-loader
そして、以下を発行することにより、jsonファイルをelasticsearchにロードできます。
elasticsearch_loader --index incidents --type incident json file1.json file2.json
あなたが使用しています
$ curl -s -XPOST localhost:9200/_bulk --data-binary @requests
「リクエスト」がJSONファイルの場合、これを次のように変更する必要があります。
$ curl -s -XPOST localhost:9200/_bulk --data-binary @requests.json
この前に、jsonファイルにインデックスが付けられていない場合、jsonファイル内の各行の前にインデックス行を挿入する必要があります。 JQでこれを行うことができます。以下のリンクを参照してください: http://kevinmarsh.com/2014/10/23/using-jq-to-import-json-into-elasticsearch.html
Elasticsearchチュートリアル(shakespeareチュートリアルの例)に移動し、使用されているjsonファイルのサンプルをダウンロードしてご覧ください。各jsonオブジェクト(各個別の行)の前には、インデックス行があります。これは、jqコマンドを使用した後に探しているものです。この形式はバルクAPIを使用するために必須であり、プレーンjsonファイルは機能しません。
誰も言及したことはありませんが、JSONファイルには、「純粋な」JSONファイルのすべての行について、次の行が属するインデックスを指定する1行が必要です。
I.E.
{"index":{"_index":"shakespeare","_type":"act","_id":0}}
{"line_id":1,"play_name":"Henry IV","speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"}
それがなければ、何も機能せず、理由がわかりません
virtualBoxとUBUNTUを使用している場合、または単にUBUNTUを使用している場合、それは有用です。
wget https://github.com/andrewvc/ee-datasets/archive/master.Zip
Sudo apt-get install unzip (only if unzip module is not installed)
unzip master.Zip
cd ee-datasets
Java -jar elastic-loader.jar http://localhost:9200 datasets/movie_db.eloader
Filesystem APIを介してElasticsearch APIを公開するコードをいくつか作成しました。
たとえば、データの明確なエクスポート/インポートを行うことをお勧めします。
私はプロトタイプelasticdriver を作成しました。 Fuse に基づいています