記事概要
elasticsearchのデータ登録方法のまとめ
環境
- vagrant centOS6.5
- elasticsearch 1.5.2
Bulk API
elasticsearchでデータを大量に登録する場合は、Bulk APIを利用すると効率的です。
jsonファイルを用意し、以下のようにjsonを記述します。
{ "index": { "_index": "kuromoji_sample", "_type": "mountain", "_id": "1" } }{ "id": "1", "name": "富士山", "name_kana": "フジサン", "summary": "日本一の山だよ" }{ "index": { "_index": "kuromoji_sample", "_type": "mountain", "_id": "2" } }{ "id": "2", "name": "高尾山", "name_kana": "タカオサン", "summary": "世界一登山客が多い山だよ。" }
このjsonを記載したファイルを『bulk.json』と名前をつけてデータ投入してみましょう。
#curl -XPOST http://localhost:9200/_bulk --data-binary @bulk.json >/dev/null {"error":"JsonParseException[Unexpected end-of-input: expected close marker for OBJECT (from [Source: [B@664a3a13; line: 1, column: 0])\n at [Source: [B@664a3a13; line: 1, column: 4]]","status":500}
上記のエラーが発生しました。調べると、jsonに記述する形式は以下のようにする必要があるようです。
{インデックス}, {データ}, {インデックス}, {データ}
jsonファイルではなく、jsonでデータを記載したファイルです。
インデックスとデータを改行で分離する必要があります。
ファイルを修正してもう一度コマンドを叩きます。
curl -XPOST http://localhost:9200/_bulk --data-binary @bulk.json >/dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 123k 100 10960 100 113k 5071 53640 0:00:02 0:00:02 --:--:-- 53744
エラーなく上手くいきました。
登録したサンプルデータを検索
inquisitorを利用します。
urlに『http://localhost:9200/_plugin/inquisitor/#/』を入力してelasticsearch-inquisitorを立ち上げます。
{ "query": { "query_string": { "query": "富士" } } } Elapsed Time: 15ms Total Hits: 2 Max Score: 1
上手く登録できているのが確認できました。
上記の例はクエリー検索です。
inquisitorを利用すると、GUIで色々な検索パターンを試せます。
検索方法についてはまた別記事でまとめて説明します。
登録したサンプルデータを全て削除
curl -XDELETE 'http://localhost:9200/*' {"acknowledged":true}
本番環境で使ってはいけないコマンドです。
一応載せておきます。
以上。
参考サイト
elasticsearch オススメ書籍
elasticsearchをがっつりと使うなら側においておきたい一冊です。
というより、日本語の本はこれしかありません。
0 件のコメント:
コメントを投稿