4

エラスティック検索を使用していますが、インデックスとは何かを正確に理解していません。たとえば、3 つのモデル (バックパック、靴、手袋) がある場合、各モデルを独自のインデックスに入れるか、それとも各モデルの属性にインデックスを付けるか (つまり、靴のひも、靴底などにインデックスを付けるか)。

インデックス全体の検索が遅いかどうかを理解しようとしています。たとえば、モデルの各属性にインデックスを付け、たとえば 20 個のインデックスがある場合、すべてのインデックスのデータを確認する必要がある検索を実行すると、単一のインデックスを使用して 20 個の属性を格納するよりも遅くなります。そのインデックスに?

4

1 に答える 1

7

Elasticsearch では、インデックスは 1 つ以上のプライマリ シャードで構成され、シャードは Lucene インスタンスです。各プライマリ シャードには、0 個以上のレプリカを含めることができます。レプリカの存在により、高可用性と検索パフォーマンスの向上が実現します。

1 つのシャードに大量のデータを保持できます。ただし、複数のシャードを使用すると、ワークロードを複数のプロセッサと複数のサーバーに分散することが容易になります。

つまり、バランスが必要です。シャードの適切な数は、データとコンテキストによって異なります。シャードは無料ではないため、100 ノードのクラスターを実行している場合は何千ものシャードがあると便利ですが、単一のノードでそれを行うことは望ましくありません。

Elasticsearch には、インデックスがあるだけでなく、型の概念があります。インデックスはデータベースのようなもの、型はテーブルのようなものと考えてください。

異なる型を使用してもオーバーヘッドはなく、個別のインデックスを使用するよりも例にうまく適合します。

すべてのタイプ (または選択したタイプのリスト) およびすべてのインデックス (または選択したリスト) または任意の組み合わせを検索できます。

各タイプには独自のフィールド (表の列など) を含めることができます。

したがって、あなたの例では、それぞれに独自のフィールドを持つ 3 つのタイプを含む 1 つのインデックスがあります。プライマリ シャードのデフォルト数 (5) とレプリカのデフォルト数 (1) から始めて、データをよりよく理解した場合にのみこれらを変更します。

注: Elasticsearch のインデックスとデータベースのインデックスを混同しないでください。

于 2011-07-21T23:14:10.923 に答える