[解決済み] Elastic search、複数のインデックス vs 1つのインデックス、異なるデータセットに対応するタイプ?
2022-04-21 12:57:10
質問
私はMVCパターンを使用して開発されたアプリケーションを持っており、現在その複数のモデルのインデックスを作成したいと思っています。
-
各モデルに1つずつ、複数のインデックスを使用するのが良いのか、それとも各モデルに同じインデックス内の型を持つのが良いのか?どちらの方法でも、異なる検索クエリが必要になると思います。私はこれに着手したばかりです。
-
データセットが小さい場合と巨大な場合では、両コンセプトにパフォーマンス上の違いはあるのでしょうか?
2番目の質問については、どなたか良いサンプルデータを紹介していただければ、自分でテストしてみたいと思います。
どのように解決するのですか?
どちらのアプローチにも、異なる意味合いがあります。
Elasticsearchのデフォルト設定を使用していると仮定すると、各モデルに1つのインデックスを持つことは、1つのインデックスが5つのシャードを使用し、5つのデータモデルが25シャードを使用するので、シャードの数を大幅に増やすことになります。
各データモデルをインデックスとした場合の意味合い。
- 各シャードでは、異なるインデックスにデータが分散されているため、データ量が少なく、インデックス内の検索が効率的かつ高速に行えます。
- 2つ以上のインデックスからデータモデルを組み合わせて検索すると、クエリがインデックスをまたいでより多くのシャードに送られ、コンパイルされてユーザーに返される必要があるため、オーバーヘッドが発生することになります。
- シャードが追加されるたびにストレージが増加し、パフォーマンスの向上がわずかであるため、データセットが小さい場合は推奨されません。
- データセットが大きく、クエリの処理に時間がかかる場合、専用シャードに特定のデータを格納し、Elasticsearchの処理を容易にするため、推奨します。
各データモデルをインデックス内のオブジェクトタイプとして持つことの意味。
- より多くのデータがインデックスの5つのシャードに格納されます。つまり、異なるデータモデル間でクエリを実行する際のオーバーヘッド問題は少なくなりますが、シャードサイズは著しく大きくなります。
- シャード内のデータが増えると、フィルタリングする文書が増えるため、Elasticsearchの検索に時間がかかるようになります。
- 1テラバイトのデータを処理することが分かっていて、Elasticsearchのマッピングでデータを異なるインデックスや複数のシャードに分散していない場合はお勧めできません。
- 各シャードがハードウェアのスペースを占有するため、わずかなパフォーマンス向上のためにストレージスペースを浪費することがないため、小規模なデータセットに推奨されます。
データ量が多すぎるのと少ないとでは、何が違うのでしょうか?一般的には、ハードウェアのプロセッサ速度やRAM容量、Elasticsearchのマッピングで各変数に格納するデータ量、クエリ要件に依存します。これに対する明確な答えはありませんので、お客様のニーズに応じてベンチマークを行う必要があります。
関連
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
親行が削除または更新できない: 外部キー制約に失敗 解決策
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
MongoDBコマンド
-
SSISエラーコード DTS_E_OLEDBERROR.an OLE DBエラーが発生しました。エラーコード 0x80040E21 備考
-
node.jsサーバーのmysqlデータベース接続タイムアウト問題(Error: connect ETIMEDOUT)
-
DB2v10.5Express-Cのインストール
-
[解決済み] データベースの水平方向と垂直方向の拡大縮小の違い【終了しました
-
[解決済み] 既存データベースのERDを生成する【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
SocketTimeoutExceptionが発生しました。読み取りがタイムアウトした問題のトラブルシューティング
-
[Mac] sudo mongod コマンド、プロンプトコマンドが見つかりません。
-
MongoDBコマンド
-
アプリケーションから DB2 SQL Error が報告され続けます。SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.17.29
-
SQLSERVER エラーのリターンコードの意味一覧表
-
[解決済み] ファイル拡張子.DB - 正確にはどのようなデータベースなのですか?
-
[解決済み] Elasticsearchのシャードとレプリカ
-
Postgresqlのインストールに関する問題
-
[解決済み】シャーディングとは何ですか、なぜそれが重要なのですか?