DUICUO

Elasticsearchの基本概念の復習

ESコンセプトの紹介

Elasticsearch(略称ES)は、オープンソースでスケーラビリティに優れた分散型全文検索エンジンであり、Elastic Stackの中核を担っています。ほぼリアルタイムでデータの保存と取得が可能で、数百台のサーバーに拡張可能で、ペタバイト規模のデータ処理も可能です。

1. Elasticsearchのコアコンセプト

● インデックス: インデックスはリレーショナル データベースと同等です。

● 型: 型は、リレーショナルデータベースにおけるデータテーブルの型に相当します。ES 7.xでは、デフォルトの型は_docです。

ES 5.x では、インデックスには複数のタイプを設定できます。

ES 6.x では、インデックスには 1 つのタイプしか設定できません。

ES 7.x以降のバージョンでは、型の概念は段階的に廃止されます。現在の操作では型は使用されなくなり、デフォルトは_docになります。

● マッピング:マッピングは、各フィールドの型と、そのフィールドで使用されるトークナイザー情報を定義します。これは、リレーショナルデータベースのテーブル構造に相当します。

● ドキュメント: ドキュメントは、リレーショナル データベースのテーブル内の行に相当します。

● 転置インデックス: 転置インデックスは、ドキュメント内のすべての一意の単語のリストで構成され、各単語には、その単語を含むドキュメント ID のリストがあります。

● フィールド: リレーショナル データベース テーブル内のフィールド名に相当します。

2. ESデータ型の紹介

(1)文字列型

テキスト: フルテキスト インデックス作成に使用され、このタイプのフィールドはトークナイザーによってセグメント化されます。

キーワード: 単語の分割は実行されません。このフィールドの完全な値のみを検索できます。

(2)数値型

long、integer、short、byte、double、float、half_float、scaled_float。

(3)ブール値

JSON のブール値は、「true」、「false」、またはその両方の組み合わせになります。

(4)バイナリタイプ

このタイプのフィールドは、値を base64 でエンコードされた文字列として扱い、デフォルトでは保存されず、検索できません。

(5)範囲型

範囲型は、値が特定の値ではなく範囲であることを示します。

整数範囲、浮動小数点範囲、長整数範囲、倍精度浮動小数点範囲、日付範囲

たとえば、年齢のタイプが integer_range で、保存されている値が {"gte": 18, "lte": 90} の場合、 "term": {"age": 60} を検索すると、その値が取得されます。

(6)日付の種類

JSON には日付型がないため、Elasticsearch は、フォーマット定義で定義された形式に準拠しているかどうかをチェックすることで、文字列が日付型かどうかを判断します。

デフォルトの形式は、strict_date_optional_time||epoch_millis です。

「2023-01-31」や「2023/01/31 12:10:30」のような形式の文字列が使用されます。

(7)複雑なデータ型

● 配列: [ ] ネスト: ネストされた(配列型のJSONオブジェクト)。

たとえば、[{"name": "Xiao Zhang", "age": 30},{"name": "Xiao Li", "age": 35}]。

● オブジェクト: { } オブジェクト: オブジェクト (単一の JSON オブジェクト)。

たとえば、{ "name": "Xiao Li", "age": 35 }。