2016年03月27日

elasticsearchにidを指定せずにデータを投入する方法

1行ずつ登録する方法

データを1行ずつのJSONとして用意してファイル保存する。

{"date": "2016/01/01",  "os": "Windows 7", "ip": "192.168.1.100"}
{"date": "2016/01/02",  "os": "Windows 8.1", "ip": "192.168.1.102"}

次に下記のようなシェル書いて「putdata.sh」のような名前で保存する。

#!/bin/bash
lineNum=1

cat $1 | while read JSON_DATA
do
        curl -XPOST "http://localhost:9200/<index_name>/<type_name>/" -d "${JSON_DATA}"
        lineNum=$((lineNum + 1))
done

あとは、このシェルに引数で保存したjsonを渡すと、順次登録する。
すごく遅いけど。

./putdata.sh data.json

Bulk APIを使用して登録する方法

1行ずつ登録売る方法は遅いので沢山登録するときは、Bulk APIを用いて登録する。
Bulk APIは2行で1つの値を登録する。最初のindexは空にしておくと、自動でIDを付加してくれる。

{ "index": {}}
{"date": "2016/01/01",  "os": "Windows 7", "ip": "192.168.1.100"}
{ "index": {}}
{"date": "2016/01/02",  "os": "Windows 8.1", "ip": "192.168.1.102"}

上記jsonをcurlで登録する。

curl -XPOST "localhost:9200/<index_name>/<type_name>/_bulk" --data-binary @hogehoge.json
参考
タグ:Elasticsearch
posted by MINE at 22:18 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック