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
参考
- Cheaper in Bulkelastic