2011-07-21 13 views
4

私は弾性検索を使用しており、インデックスが何であるかを正確に理解していません。たとえば、私が3つのモデル(バックパック、靴、手袋)を持っている場合、各モデルを独自のインデックスに入れたり、各モデルの属性をインデックス化しますか?つまり、靴のレース、検索エンジン指標についてどうすればよいですか?

インデックス間で検索するのが遅いかどうかを理解しようとしています。たとえば、私のモデルの各属性にインデックスを付け、20のインデックスがあるとすると、すべてのインデックスのデータを調べる必要がある検索を実行すると、単一のインデックスを持つよりも時間がかかります。そのインデックスに?

答えて

7

インデックスは、1つまたは複数のプライマリシャードから構成されます。シャードは、Luceneインスタンスです。各プライマリ・シャードにはゼロ個以上のレプリカがあり、その存在が可用性を高め、検索パフォーマンスを向上させます。

1つのシャードは、多くのデータを保持できます。ただし、複数のシャードでは、ワークロードを複数のプロセッサと複数のサーバーに分散する方が簡単です。

これは、バランスが必要だと言いました。適切な数の破片は、データと文脈によって異なります。シャードは無料ではありません。したがって、100ノードのクラスタを実行している場合には数千のシャードを持つと便利ですが、1つのノードにはシャードは必要ありません。

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

異なるタイプを使用するとオーバーヘッドがなく、別々のインデックスを持つよりもあなたの例に適しています。

引き続き、すべてのタイプ(または選択したタイプのリスト)とすべてのインデックス(または選択したリスト)またはその組み合わせを検索できます。

各タイプには、独自のフィールド(表の列など)を設定できます。

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

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

関連する問題