今回はデータを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
}
ちゃんと登録されているか確認します。
ちゃんと登録されてますね。
今回はここまで。
今回はここまで。