すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:インデックステーブルのロードポリシーを構成する

最終更新日:Mar 02, 2025

概要

インデックステーブルのロードポリシーは、複数のインデックスファイルのロードポリシーで構成されます。インデックステーブルのロードポリシーは、一連のインデックスファイルのロード方法を記述します。システムがインデックステーブルをロードすると、システムは、すべてのポリシーの中でインデックスファイルに最初に一致するポリシーに基づいて、インデックステーブルの各インデックスファイルをロードします。

設定例

{
    "load_config":[
        {
            "file_patterns":[
                "_ATTRIBUTE_",
                "/index/title/.*",
                "/index/body/dictionary"
            ],
            "load_strategy":"mmap",
            "lifecycle":"hot",
            "load_strategy_param":{
                "lock":true,
                "partial_lock":true,
                "advise_random":false,
                "slice":4194304,
                "interval":2
            },
            "remote" : false,
            "deploy" : true,
            "warmup_strategy":"sequential"
        },
        {
            "file_patterns":[
                "_SUMMARY_"
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote" : true,
            "deploy" : false
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

パラメーター

  • file_patterns: インデックスファイルのロードポリシーの照合に使用されるパターン。このパラメーターは、正規表現を使用して指定します。インデックステーブルのディレクトリ構造の詳細については、このトピックのインデックスファイルのディレクトリ構造セクションをご参照ください。一致パターンは、セグメントディレクトリを基準としたファイル名の正規表現です。たとえば、title という名前の転置インデックスに独立したロードポリシーを設定する場合、title インデックスの一致パターンは /index/title/.* 正規表現です。 title インデックス名は、index ディレクトリに title ディレクトリが存在することを示します。 title ディレクトリ内で一致させるすべてのファイルは、.* で表されます。インデックスファイルの一致パターンの構成を簡素化するために、次の組み込みマクロ定義が提供されています。

    • _ATTRIBUTE_: /attribute/.* と同等で、すべてのフォワードインデックスを示します。

    • _INDEX_: /index/.* と同等で、すべての転置インデックスを示します。

    • _SUMMARY_: /summary/ と同等で、すべてのサマリーインデックスを示します。

  • load_strategy: ロードポリシー。有効な値: mmap および cache。

  • load_strategy_param: ロードポリシーの構成に使用されるパラメーター。

    • mmap ロードポリシーの構成に使用されるパラメーター

      • lock: mmap ロードポリシーのロックモードを有効にするかどうかを指定します。デフォルト値: false。ロックモードが有効になると、インデックスはスワップアウトされずにメモリにロードされます。これにより、クエリのパフォーマンスは確保されますが、メモリのオーバーヘッドが増加します。

      • partial_lock: 転置インデックスの部分ロックモードを有効にするかどうかを指定します。デフォルト値: false。部分ロックモードが有効になると、転置インデックスの第 1 レベルディクショナリのみがメモリにロックされます。第 2 レベルディクショナリは、メモリを節約するためにロックされません。

      • advise_random: ディスクへの先読みリクエストの数を減らすかどうかを指定します。デフォルト値: false。インデックスが大きすぎて一部のインデックスをメモリにロードできないシナリオでは、ディスク I/O がクエリの パフォーマンスボトルネック になる可能性があります。このパラメーターを true に設定すると、ディスクへの先読みリクエストの数を大幅に減らすことができ、クエリのパフォーマンスを向上させることができます。

      • slice および interval: これら 2 つのパラメーターは、インデックスのプリフェッチとロードの速度を制御するために指定されます。システムは、slice パラメーターで指定されたサイズのデータを読み取り、interval パラメーターで指定された間隔でスリープします。 slice パラメーターの単位: バイト。 interval パラメーターの単位: ミリ秒。 slice パラメーターと interval パラメーターは組み合わせて使用する必要があります。 slice パラメーターのデフォルト値は 4194304 です。 interval パラメーターのデフォルト値は 0 で、これは速度制限が無効になっていることを示します。

    • cache ロードポリシーの構成に使用されるパラメーター

      • direct_io: Direct I/O モードでファイルを読み取るかどうかを指定します。デフォルト値: false。 Direct I/O モードで SSD からデータを読み取ると、クエリのパフォーマンスが向上します。

      • global_cache: グローバルブロックキャッシュを有効にするかどうかを指定します。デフォルト値: false。グローバルブロックキャッシュのサイズは、環境変数を使用して指定します。グローバルブロックキャッシュは使用できません。このパラメーターを false に設定することをお勧めします。

      • cache_size: ブロックキャッシュのサイズ。このパラメーターは、global_cache パラメーターが false に設定されている場合にのみ有効になります。デフォルト値: 1。単位: MB。

      • block_size: ブロックのサイズ。デフォルト値: 4096。単位: バイト。

  • remote: file_patterns パラメーターの値に一致するインデックスファイルをリモート 分散ストレージ システムから読み取るかどうかを指定します。有効な値: true および false。このパラメーターは、need_read_remote_index パラメーターが true に設定されている場合にのみ有効になります。 need_read_remote_index パラメーターが false に設定されている場合、remote パラメーターは false に固定されます。

  • deploy: file_patterns パラメーターの値に一致するインデックスファイルを ローカルディスク に配布するかどうかを指定します。有効な値: true および false。このパラメーターは、need_deploy_index パラメーターが true に設定されている場合にのみ有効になります。 need_deploy_index パラメーターが false に設定されている場合、deploy パラメーターは false に固定されます。

  • warmup_strategy: プリフェッチポリシー。このパラメーターは、load_strategy パラメーターが mmap に設定されている場合にのみ有効になります。デフォルト値は none で、これはシステムがデータをプリフェッチしないことを示します。データをプリフェッチするには、パラメーターを sequential に設定します。 sequential の値は、システムがデータを順番にプリフェッチすることを指定します。

mmap ロードポリシーの例

{
    "load_config":[
        {
            "file_patterns":[
                "/attribute/price/.*", # price という名前の属性フィールド。
                "/index/title/.*", # title という名前の転置インデックス。
                "/index/body/dictionary", # body という名前の転置インデックスのディクショナリ。
                "/index/vector/aitheta.*" # vector という名前のベクターインデックス。
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":true, # mmap ロードポリシーのロックモードが有効になっています。
                "partial_lock":true, # 部分ロックモードが有効になっています。転置インデックスの第 1 レベルディクショナリのみがロックされます。
                "slice":4194304, # プリフェッチ中に、システムは 2 ミリ秒間隔で一度に 4 MB のデータを読み取ります。
                "interval":2
            },
            "remote" : false, # システムは、file_patterns パラメーターの値に一致するインデックスファイルをリモート分散ストレージシステムから読み取りません。
            "deploy" : true, # システムはインデックスをローカルディスクに配布します。
            "warmup_strategy":"sequential" # システムはデータを順番にプリフェッチします。
        },
        {
            "file_patterns":[
                "/attribute/tags", # tags という名前の属性フィールド。
                "/index/description/.*" # description という名前の転置インデックス。
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false,
            },
            "remote" : false,
            "deploy" : true,
            "warmup_strategy":"none"
        }
    ]
}

キャッシュロードポリシーの例

{
    "load_config":[
        {
            "file_patterns":[
                "_ATTRIBUTE_" # すべての属性フィールド。
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false, # グローバルブロックキャッシュは無効になっています。
                "direct_io":true, # システムは Direct I/O モードでファイルを読み取ります。
                "cache_size":20480 # キャッシュサイズは 20 GB です。
            },
            "remote" : false, # システムは、file_patterns パラメーターの値に一致するインデックスファイルをリモート分散ストレージシステムから読み取りません。
            "deploy" : true # システムはインデックスをローカルディスクに配布します。
        },
        {
            "file_patterns":[
                "/summary/data" # サマリーインデックスのデータファイル。
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote" : false,
            "deploy" : true
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

ストレージとコンピューティングの分離

# ストレージとコンピューティングの分離を有効にするには、need_read_remote_index パラメーターを true に設定します。
{
    "load_config":[
        {
            "file_patterns":[
                "/index/title/.*" # title という名前の転置インデックス。
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":true, # mmap ロードポリシーのロックモードが有効になっています。
                "partial_lock":true, # 部分ロックモードが有効になっています。転置インデックスの第 1 レベルディクショナリのみがロックされます。
                "slice":4194304, # プリフェッチ中に、システムは 2 ミリ秒間隔で一度に 4 MB のデータを読み取ります。
                "interval":2
            },
            "remote" : false, # システムは、file_patterns パラメーターの値に一致するインデックスファイルをリモート分散ストレージシステムから読み取りません。
            "deploy" : true, # システムはインデックスをローカルディスクに配布します。
            "warmup_strategy":"sequential" # システムはデータを順番にプリフェッチします。
        },
        {
            "file_patterns":[
                "_ATTRIBUTE_" # すべての属性フィールド。
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false, # グローバルブロックキャッシュは無効になっています。
                "direct_io":true, # システムは Direct I/O モードでファイルを読み取ります。
                "cache_size":20480 # キャッシュサイズは 20 GB です。
            },
            "remote": true, # システムは、file_patterns パラメーターの値に一致するインデックスファイルをリモート分散ストレージシステムから読み取ります。
            "deploy" : false # システムはインデックスをローカルディスクに配布しません。
        },
        {
            "file_patterns":[
                "/summary/data" # サマリーインデックスのデータファイル。
            ],
            "load_strategy":"cache",
            "load_strategy_param":{
                "global_cache":false,
                "direct_io":true,
                "cache_size":4096
            },
            "remote": true, # システムは、file_patterns パラメーターの値に一致するインデックスファイルをリモート分散ストレージシステムから読み取ります。
            "deploy" : false # システムはインデックスをローカルディスクに配布しません。
        },
        {
            "warmup_strategy":"none",
            "file_patterns":[
                ".*"
            ],
            "load_strategy":"mmap",
            "load_strategy_param":{
                "lock":false
            }
        }
    ]
}

インデックスファイルのディレクトリ構造

  |-- generation_0
      |-- partition_0_65535
          |-- index_format_version
          |-- index_partition_meta
          |-- schema.json
          |-- segment_0
              |-- attribute
                  `--attribute_name
                     `--data   
              |-- deletionmap
              |-- deploy_index
              |-- index
                 `--index_name
                    |-- bitmap_dictionary
                    |-- bitmap_posting
                    |-- dictionary
                    `-- posting
                  `--vector_index_name
                    |-- aitheta.index
                  	|-- aitheta.index.addr
              |-- summary
                	|-- data
                	|-- offset
              `-- segment_info
          |-- adaptive_bitmap__meta
              |--deploy_index
              |--dictionary_name
          |-- truncate_meta
              |-- deploy_index
              `-- truncate_meta_file 
          `-- version.0

項目

説明

generation

OpenSearch Retrieval Engine Edition がフルインデックスのバージョンを区別するために使用する識別子。

partition

Searcher ワーカーがインデックスをロードするための基本単位。パーティションに過剰な量のデータが含まれている場合、Searcher ワーカーのパフォーマンスが低下します。オンラインデータを複数のパーティションに分割して、各 Searcher ワーカーの取得効率を確保できます。

segment

インデックスの基本単位。セグメントは、転置インデックスとフォワードインデックスのデータを格納します。ビルダーは、各インデックスダンプのセグメントを生成します。セグメントは、マージポリシーに基づいてマージできます。パーティションで使用可能なセグメントは、version フィールドに表示されます。

index

転置インデックスの基本単位。

attribute

フォワードインデックスの基本単位。

deletionmap

削除されたドキュメントに関する情報。

index_format_version

インデックスのバージョン。インデックスバージョンは、インデックスファイルがバイナリ要件を満たしているかどうかを確認するために使用されます。

index_partition_meta

インデックスのグローバルソート情報。グローバルソート情報には、ソートフィールドとソート順序(昇順、降順など)が含まれます。

schema.json

インデックスの構成に使用される構成ファイル。ファイルには、フィールド、インデックス、属性、およびサマリーに関する情報が含まれています。 OpenSearch Retrieval Engine Edition は、このファイルを使用してインデックスをロードします。

version.0

インデックスファイルのバージョン番号。このフィールドには、OpenSearch Retrieval Engine Edition がロードする必要のあるセグメントと、パーティション内の最新のドキュメントの タイムスタンプ が含まれています。 OpenSearch Retrieval Engine Edition がリアルタイムデータのインデックスを作成する場合、システムは増分インデックスのタイムスタンプに基づいて古い元のドキュメントを除外します。

segment_info

セグメントに関するサマリー情報。このフィールドでは、セグメント内のドキュメント数、セグメントがマージされているかどうか、ロケーター情報、および最新のドキュメントのタイムスタンプに関する情報を取得できます。

dictionary

転置インデックスのディクショナリ。

posting

転置インデックスの 転置インデックス 。

bitmap_dictionary

高頻度語のビットマップインデックスを作成する場合、高頻度語のディクショナリ。

bitmap_posting

高頻度語のビットマップインデックスを作成する場合、高頻度語の 転置インデックス 。

aitheta.index

ベクターインデックスファイル。

aitheta.index.addr

ベクターインデックスのメタデータ。