23.2.4. シャード化インデックス


場合によっては、特定のエンティティーのインデックス付きデータを複数の Lucene インデックスに分割 (シャード) すると役に立つことがあります。
警告
シャード化は、欠点が短所を上回った場合にのみ実装する必要があります。単一の検索用にシャードをすべて開く必要があるため、シャード化されたインデックスの検索は一般的に遅くなります。
シャード化のユースケースを以下に示します。
  • 単一のインデックスが大きいと、インデックスの更新時間は遅くなります。
  • 一般的な検索は、データが顧客、地域、またはアプリケーションによってセグメント化された場合など、インデックスのサブセットのみに一致します。
デフォルトでは、シャードの数が設定されていないとシャード化は有効になりません。これには、hibernate.search.<indexName>.sharding_strategy.nbr_of_shards プロパティーを使用します。

例23.3 インデックスシャード化の有効化

この例では、シャードが 5 個有効になります。
hibernate.search.<indexName>.sharding_strategy.nbr_of_shards = 5
データをサブインデックスに分割することが、IndexShardingStrategy です。デフォルトのシャーディングストラテジーは、ID 文字列表現のハッシュ値( FieldBridgeによって生成される)に従ってデータを分割します。これにより、シャードが大幅に分散されます。カスタム IndexShardingStrategy を実装して、デフォルトのストラテジーを置き換えることができます。カスタムストラテジーを使用するには、hibernate.search.<indexName>.sharding_strategy プロパティーを設定する必要があります。

例23.4 カスタムシャード化ストラテジーの指定

hibernate.search.<indexName>.sharding_strategy = my.shardingstrategy.Implementation
IndexShardingStrategy プロパティーでは、クエリーを実行するシャードを選択して検索を最適化することもできます。フィルターシャードストラテジーをアクティベートすることで、クエリーに応答するために使用されるシャードのサブセット(IndexShardingStrategy.getIndexManagersForQuery)を選択し、クエリーの実行時間を短縮できます。
各シャードには独立した IndexManager があるため、異なるディレクトリープロバイダーおよびバックエンド設定を使用するように設定できます。例23.5「エンティティーアニメーション設定のシャーディング」 の Animal エンティティーの IndexManager インデックス名は Animal.0 から Animal.4 までです。つまり、各シャードには独自のインデックスの名前の後に . (ドット)およびそのインデックス番号が続きます。

例23.5 エンティティーアニメーション設定のシャーディング

hibernate.search.default.indexBase = /usr/lucene/indexes
hibernate.search.Animal.sharding_strategy.nbr_of_shards = 5
hibernate.search.Animal.directory_provider = filesystem
hibernate.search.Animal.0.indexName = Animal00 
hibernate.search.Animal.3.indexBase = /usr/lucene/sharded
hibernate.search.Animal.3.indexName = Animal03
例23.5「エンティティーアニメーション設定のシャーディング」 では、設定では、デフォルトの id 文字列ハッシュストラテジーを使用し、Anonim al インデックスを 5 つのサブインデックスにシャード化します。すべてのサブインデックスはファイルシステムのインスタンスで、各サブインデックスが保存されるディレクトリーは、以下のようになります。
  • サブインデックス 0 の場合: /usr/lucene/indexes/Animal00 (共有 indexBase が上書きされた indexName)の場合
  • for sub-index 1: /usr/lucene/indexes/Animal.1 (shared indexBase, default indexName)
  • for sub-index 2: /usr/lucene/indexes/Animal.2 (shared indexBase, default indexName)
  • サブインデックス 3 の場合: /usr/lucene/shared/Animal03 (overridden indexBase, overridden indexName)
  • サブインデックス 4 の場合: /usr/lucene/indexes/Animal.4 (共有 indexBase、デフォルトの indexName)
IndexShardingStrategy を実装する場合、このフィールドを使用してシャーディングの選択を判別できます。deletion、purgepurgeAll などの操作を処理するには、すべてのフィールド値またはプライマリー識別子を読み取れずにインデックスを返す必要があることもあります。このような場合、すべてのインデックスが返されるため、削除操作は、削除されるドキュメントが含まれる可能性のあるすべてのインデックスに伝播されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.