esの自動的なインデックス作成メカニズムはどのように動作しますか
Elasticsearchでは,以下の手段でインデックスを自動作成できます
- ダイナミックマッピング(Dynamic Mapping):Elasticsearchはドキュメントのフィールドに基づいてその型を自動的に推測し、対応するインデックスを作成します。index.auto_create_indexのパラメータをtrueに設定することで、インデックスの自動作成を許可できます。
- テンプレート:テンプレートを使ってインデックスのマッピングのルールを指定できます。テンプレートは特定のインデックス名、パターンまたは他の条件に一致し、その後、対応するインデックスを自動的に作成します。
- 動的マッピングをインデックステンプレートと結び付けて、新しいインデックスのマッピングを自動的に作成できます。動的マッピングのルールをインデックステンプレートに設定し、新しく作成したインデックスにそのテンプレートを適用します。
以下は、インデックステンプレートと動的マッピングを使用してインデックスを自動作成する例です。
- インデックス テンプレートを作成する:
PUT _index_template/my_template
{
"index_patterns": ["my-*"],
"template": {
"mappings": {
"dynamic_templates": [
{
"strings_as_keywords": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
]
}
}
}
- ドキュメントを作成します。
PUT my-index/_doc/1
{
"title": "Hello World",
"content": "This is a test document"
}
- 私のインデックス
- スマートに働いて、豊かに暮らす
- ご希望があれば、その概要をお伝えいたします。
- ネイティブな日本語で言い換えてください。1つのオプションのみ必要です。
従って、my- で始まる新しいインデックスが作成される毎に、テンプレート内のマッピングルールが自動的に適用され、文書のフィールドタイプに基づいて自動的にインデックスが作成されます。
自動作成インデックスはインデックスのマッピング不整合の可能性があるので、実際利用時にはインデックステンプレートと動的マッピングルールを慎重に設計し、データの整合性・正確性を担保することが推奨される。