インデックス、ドキュメント、およびフィールド
インデックスはElasticsearchにおけるストレージの基本単位であり、類似の特性を持つデータを格納するための論理的な名前空間です。Elasticsearchをデプロイした後、データを格納するためのインデックスを作成することから始めます。
インデックスは、名前またはエイリアスによって一意に識別されるドキュメントのコレクションです。この一意の名前は、検索クエリやその他の操作でインデックスをターゲットにするために使用されるため重要です。
密接に関連する概念はdata streamです。このインデックスの抽象化は、追加専用のタイムスタンプ付きデータに最適化されており、隠れた自動生成されたバックインデックスで構成されています。タイムスタンプ付きデータを扱う場合は、追加のツールと最適化されたコンテンツのためにElastic Observabilityソリューションをお勧めします。
ドキュメントとフィールド
ElasticsearchはデータをJSONドキュメントの形式でシリアライズして保存します。ドキュメントは、データを含むキーと値のペアであるフィールドのセットです。各ドキュメントには一意のIDがあり、これを作成するか、Elasticsearchに自動生成させることができます。
シンプルなElasticsearchドキュメントは次のようになります:
Js
{
"_index": "my-first-elasticsearch-index",
"_id": "DyFpo5EBxE8fzbb95DOa",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"email": "[email protected]",
"first_name": "John",
"last_name": "Smith",
"info": {
"bio": "Eco-warrior and defender of the weak",
"age": 25,
"interests": [
"dolphins",
"whales"
]
},
"join_date": "2024/05/01"
}
}
メタデータフィールド
インデックスされたドキュメントにはデータとメタデータが含まれています。メタデータフィールドは、ドキュメントに関する情報を格納するシステムフィールドです。Elasticsearchでは、メタデータフィールドはアンダースコアで始まります。たとえば、次のフィールドはメタデータフィールドです:
_index
: ドキュメントが保存されているインデックスの名前。_id
: ドキュメントのID。IDはインデックスごとに一意である必要があります。
マッピングとデータ型
各インデックスには、ドキュメント内のフィールドがどのようにインデックスされるかを定義するmappingまたはスキーマがあります。マッピングは、各フィールドのdata type、フィールドがどのようにインデックスされるべきか、そしてどのように保存されるべきかを定義します。Elasticsearchにドキュメントを追加する際には、マッピングに対して2つのオプションがあります:
- 動的マッピング: Elasticsearchにデータ型を自動的に検出させ、マッピングを作成させます。動的マッピングは迅速に始めるのに役立ちますが、自動フィールド型推論のために特定のユースケースに対して最適でない結果をもたらす可能性があります。
- 明示的マッピング: 各フィールドのデータ型を指定して事前にマッピングを定義します。特定のユースケースに合わせてデータがどのようにインデックスされるかを完全に制御できるため、プロダクションユースケースに推奨されます。
同じインデックスで動的マッピングと明示的マッピングの組み合わせを使用できます。これは、データ内に既知のフィールドと未知のフィールドが混在している場合に便利です。