Elasticsearch のインデックスとは何ですか? 1 つのアプリケーションに複数のインデックスがありますか? それとも 1 つだけですか?
ある自動車メーカー向けにシステムを構築したとしましょう。人、車、スペアパーツなどを扱っています。製造元という名前のインデックスが 1 つありますか?それとも、人、車、スペアパーツにそれぞれ 1 つのインデックスがありますか? 誰か説明してくれませんか?
Elasticsearch のインデックスとは何ですか? 1 つのアプリケーションに複数のインデックスがありますか? それとも 1 つだけですか?
ある自動車メーカー向けにシステムを構築したとしましょう。人、車、スペアパーツなどを扱っています。製造元という名前のインデックスが 1 つありますか?それとも、人、車、スペアパーツにそれぞれ 1 つのインデックスがありますか? 誰か説明してくれませんか?
良い質問です。その答えは、予想よりもはるかに微妙です。インデックスは、さまざまな目的で使用できます。
最も簡単で使い慣れたレイアウトは、リレーショナル データベースに期待されるものを複製します。インデックスは (非常に大まかに) データベースのようなものと考えることができます。
ElasticSearch クラスターには複数のIndices
(データベース) を含めることができ、さらに複数のTypes
(テーブル) を含めることができます。これらのタイプは複数Documents
(行) を保持し、各ドキュメントにはProperties
(列) があります。
SubaruFactory
したがって、自動車製造のシナリオでは、インデックスがある場合があります。このインデックスには、次の 3 つの異なるタイプがあります。
People
Cars
Spare_Parts
各タイプには、そのタイプに対応するドキュメントが含まれます (たとえば、Subaru Imprezza のドキュメントはそのCars
タイプの中にあります。このドキュメントには、その特定の車に関するすべての詳細が含まれています)。
検索とクエリの形式は、http://localhost:9200/[index]/[type]/[operation] です。
したがって、Subaru ドキュメントを取得するには、次のようにします。
$ curl -XGET localhost:9200/SubaruFactory/Cars/SubaruImprezza
.
現在、インデックス/タイプは、RDBM で慣れているデータベース/テーブルの抽象化よりもはるかに柔軟です。これらは便利なデータ編成メカニズムと見なすことができ、データの設定方法に応じてパフォーマンス上の利点が追加されます。
根本的に異なるアプローチを示すために、多くの人がロギングに ElasticSearch を使用しています。標準的な形式は、毎日新しいインデックスを割り当てることです。インデックスのリストは次のようになります。
ElasticSearch を使用すると、複数のインデックスを同時にクエリできるため、問題はありません。
$ curl -XGET localhost:9200/logs-2013-02-22,logs-2013-02-21/Errors/_search=q:"Error Message"
過去 2 日間のログを同時に検索します。この形式には、ログの性質による利点があります。ほとんどのログはまったく見られず、直線的な時間の流れで編成されます。ログごとにインデックスを作成すると、より論理的になり、検索のパフォーマンスが向上します。
.
別の根本的に異なるアプローチは、ユーザーごとにインデックスを作成することです。ソーシャル ネットワーキング サイトがあり、各ユーザーが大量のランダム データを持っているとします。ユーザーごとに 1 つのインデックスを作成できます。構造は次のようになります。
このセットアップが従来の RDBM のやり方 (例えば、趣味/友達/写真をタイプとして持つ「ユーザー」インデックス) でいかに簡単にできるかに注目してください。すべてのユーザーは、単一の巨大なインデックスにスローされます。
代わりに、データの編成とパフォーマンス上の理由から、データを分割することが理にかなっている場合があります。このシナリオでは、各ユーザーが大量のデータを持っていると想定しており、それらを分離する必要があります。ElasticSearch では問題なく、ユーザーごとにインデックスを作成できます。
インデックスは、対応するドキュメントへのフィールドのマッピングを格納するためのデータ構造です。目的は、多くの場合、メモリ使用量と前処理時間の増加を犠牲にして、より高速な検索を可能にすることです。
作成するインデックスの数は、アプリケーションの要件に従って行う必要がある設計上の決定です。各ビジネス コンセプトのインデックスを持つことができます.年の各月のインデックスを持つことができます.
lucene と elasticsearch の概念に慣れるために、ある程度の時間を費やす必要があります。