今回はデータをElasticSearchにインポートする際に、どのデータがどの項目に入るか?
そのデータは数値か?日付か?などなど、データインポートする際に必要な
そのデータは数値か?日付か?などなど、データインポートする際に必要な
Mapping作業を行ってみたいと思います。- 環境
引き続き前回の環境を前提に進めていきたいと思います。
Mapping用のJSONファイル作成
MySQLなどで言うところのテーブルCreate用のSQLを作成するような感じだと思います。
- 用語
Mapping Types
Index内のTypeを定義するもの。
メタ要素として
またMappingTypes内にはフィールドとして
メタ要素として
_index, _type, _id, _sourceがある。またMappingTypes内にはフィールドとして
Propertiesを持つ。Field datatypes
フィールドのデータタイプを定義する。
主要なものとして
JSONのフォーマットで階層を用いて
主要なものとして
string, date, long, double, boolean, ipなどがある。JSONのフォーマットで階層を用いて
objectやnestedというデータタイプもあるらしい。
サンプルとして公式ページを参考にシンプルなMappingを作成してみます。
{
"mappings": {
"user": { *1
"properties": { *2
"name": { "type": "string" }, *3
"age": { "type": "integer" }
}
},
"book": {
"properties": {
"title": { "type": "string" },
"description": { "type": "string" },
"user_id": {
"type": "string",
"index": "not_analyzed"
},
"created": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
}
}
}
}
一応ユーザーと、そのユーザーが所有する書籍というイメージで作成してみました^^;
*1がMappingType、*2がフィールド、*3がフィールドとデータタイプになります
試しにこれを
↑のJSONファイルを
user_booksというIndexに適用させてみたいと思います。↑のJSONファイルを
mapping.jsonとして保存し、保存した場所で以下コマンド実行。$ curl -X POST 192.168.33.180:9200/user_books -d @mapping.json
{"acknowledged":true}が返って来れば成功早速 http://192.168.33.180:9200/_plugin/head/ にアクセスして確認してみます。
ちゃんと
user_booksというIndexが作成されていれば成功です。テストデータ投入
試しに1件
userのTypeのid=1にデータを投入してみます。$ curl -X PUT 192.168.33.180:9200/user_books/user/1 -d '{
"name" : "hoge",
"age" : 20
}'
以下のようなレスポンスがあれば成功です。
{
"_index":"user_books",
"_type":"user",
"_id":"1",
"_version":1,
"_shards":
{
"total":2,
"successful":1,
"failed":0
},
"created":true
}
ちゃんと登録されているか確認します。
ちゃんと登録されてますね。
今回はここまで。
今回はここまで。


0 件のコメント:
コメントを投稿