2015年6月15日月曜日

elasticsearchのデータ登録方法

記事概要


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 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...