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

OpenSearch:インデックステーブルの設定

最終更新日:Jun 23, 2026

インデックステーブルを設定して、Retrieval Engine Edition のデータ形式を定義し、転置インデックス、フォワードインデックス、サマリーインデックスを構築します。

インデックステーブル設定の概要

インデックステーブルの設定は、Retrieval Engine Edition における重要な設定です。ソースドキュメントのデータ形式と、転置インデックス、フォワードインデックス、サマリーインデックスなどのインデックスの構築方法を定義します。

インデックステーブルの設定

設定の概要

{
    "table_name":"sample",
    "fields":[

    ],
    "indexs":[

    ],
    "attributes":[

    ],
    "summarys":{

    },
    "dictionaries":[

    ],
    "adaptive_dictionaries":[
      
    ],
    "file_compress":{

    },
    "enable_ttl":true,
    "ttl_field_name":"ttl_field",
    "default_ttl":86400
}
  • table_name:インデックステーブルの名前です。システムは、この名前を使用して $table_name_schema.json という名前のインデックステーブル設定ファイルを生成します。

  • fields:インデックス構築に使用されるフィールドです。

  • indexes:転置インデックスの設定です。

  • attributes:フォワードインデックスの設定です。

  • summarys:サマリーインデックスの設定です。

  • dictionaries:ビットマップインデックスを構築するための辞書です。ビットマップインデックスを使用しない場合は不要です。高頻度辞書またはアダプティブ辞書は、インデックス領域を削減し、検索パフォーマンスを向上させることができます。

  • adaptive_dictionaries:アダプティブビットマップインデックスを構築するための設定です。設定されたルールに基づいて高頻度ワードと対応するビットマップインデックスを生成します。不要な場合は、この項目を省略できます。

  • file_compress:ファイル圧縮方法のパラメーターとエイリアスです。フォワードインデックス、転置インデックス、サマリーインデックスは、ファイルレベルの圧縮をサポートしています。

  • enable_ttl:期限切れのデータを自動的に削除する Time to Live (TTL) 機能を有効にするかどうかを指定します。デフォルト値:false。

  • ttl_field_name:TTL フィールドとして使用するテーブルフィールドです。設定しない場合、組み込みフィールドの ops_doc_time_to_live_in_seconds が使用されます。ソースドキュメントが TTL フィールドの値を提供しない場合、デフォルトの TTL 値が適用されます。このフィールドは、単一値の uint32 フィールドである必要があります。

  • default_ttl:デフォルトの TTL 値です。enable_ttltrue に設定しても default_ttl を設定しない場合、デフォルト値は std::numeric_limits::max() >> 20 になります。default_ttl を設定すると、enable_ttl は自動的に true になります。

フィールド設定

 "fields":[
        {
            "field_name":"title",
            "field_type":"TEXT",
            "analyzer":"chn_standard"
        },
        {
            "field_name":"dup_title",
            "field_type":"TEXT",
            "analyzer":"fuzzy",
            "user_defined_param" : {
                "copy_from" : "title"
            }
        },
        {
            "field_name":"category",
            "field_type":"INTEGER",
            "multi_value":true,
            "compress_type":"uniq|equal"
        },
        {
            "field_name":"mlr_features",
            "field_type":"INTEGER",
            "multi_value":true,
            "updatable_multi_value":true
        },
        {
            "field_name":"feature",
            "field_type":"float",
            "multi_value":true,
            "fixed_multi_value_count":32,
            "compress_type":"uniq|fp16",
            "updatable_multi_value":true
        },
        {
            "field_name":"user_id",
            "field_type":"INTEGER"
        },
        {
            "field_name":"price",
            "field_type":"INTEGER",
            "enable_null":true,
            "default_null_string":"default_null"
        },
        {
            "field_name":"product_id",
            "field_type":"LONG"
        },
        {
            "field_name":"product_type",
            "field_type":"UINT8",
            "compress_type":"equal"
        },
        {
            "field_name":"bitwords",
            "field_type":"STRING",
            "multi_value":true
        },
        {
            "field_name":"date",
            "field_type":"DATE"
        },
        {
            "field_name":"time",
            "field_type":"TIME"
        },
        {
            "field_name":"timestamp",
            "field_type":"TIMESTAMP",
            "default_time_zone":"+0800"
        }
    ]
  • field_name:フィールドの名前です。

  • field_type:フィールドのデータ型です。詳細については、「Retrieval Engine Edition の組み込みフィールドタイプ」をご参照ください。

  • analyzer:TEXT フィールド用のアナライザーです。TEXT フィールドには必須ですが、他のフィールドタイプには設定できません。組み込みのアナライザーに関する詳細については、「アナライザー」をご参照ください。単一のフィールドに異なるアナライザーを適用するには、スキーマに新しいフィールドを追加し、user_defined_param を設定します。例として dup_title フィールドをご参照ください。

  • multi_value:フィールドが複数値フィールドであるかどうかを指定します。属性の構築に使用される場合、複数値属性が作成されます。デフォルト値:false

  • updatable_multi_value:この複数値フィールドが更新可能かどうかを指定します。デフォルト値:false。サポートされている型:INT8、UINT8、INT16、UINT16、INTEGER (32 ビット整数)、UINT32、LONG (64 ビット整数)、UINT64、FLOAT、DOUBLE、および STRING。true に設定した場合、u32offset_threshold (デフォルト:0xFFFFFFFFL) も設定できます。最大オフセットが u32offset_threshold を超える場合、8 バイトのオフセットファイル形式が使用されます。それ以外の場合は、4 バイトの形式が使用されます。

  • fixed_multi_value_count:複数値フィールドの固定値数です。設定すると、フィールドは固定長の複数値属性になります。サポートされている型:int8int16int32int64uint8uint16uint32uint64float、および double。このパラメーターは単一値の文字列フィールドにも使用できますが、複数値の文字列フィールドには使用できません。

  • compress_type:このフィールドを属性として保存するための圧縮方法です。有効な値:uniqequal、または両方の組み合わせ。デフォルト:空 (圧縮なし)。

  • 複数値属性または文字列属性の場合、uniq はデータを重複排除して圧縮し、equal はオフセットデータに等値圧縮を使用します。

  • 単一値の整数属性には uniq を設定できませんが、equal を設定してデータに等値圧縮を適用することはできます。単一値の FLOAT および DOUBLE 属性も等値圧縮をサポートしています。

  • その他の圧縮方法:固定長の複数値 float フィールドの場合、uniq|equal に加えて、fp16block_fp、または int8#[absMax] のいずれかの非可逆エンコーディング圧縮方法を選択することもできます。単一値の float フィールドの場合、圧縮に fp16 または int8#[absMax] を選択することもできます。

  • fp16block_fp の両方の圧縮方法では、約 50% の圧縮率が得られます。fp16 方式は使用する容量がわずかに少なくなりますが、block_fp 方式よりも精度損失が大きくなります。

  • int8#[absMax]:エンコーディングの絶対値の上限を指定する必要があります。たとえば、int8#1.5 の場合、エンコードされた値の範囲は [-1.5, 1.5] です。この方法では、元のサイズの 25% の圧縮率を達成します。精度損失は absMax に関連します。absMax 値が大きいほど、精度損失は大きくなります。

  • enable_null:フィールドに NULL 値を含めることができるかどうかを指定します。true に設定すると、フィールドは固定長の複数値または等値圧縮を使用できなくなります。

  • default_null_string:NULL 値のリテラル表現です。デフォルト値:__NULL__

  • TIMESTAMP フィールドの場合、default_time_zone+/-HHMM 形式 (例:UTC+8 の場合は +0800) で設定します。設定すると、タイムゾーン情報のない TIMESTAMP 値は、設定されたデフォルトに基づいて UTC に変換されます。サマリーフィールドはデフォルトのタイムゾーンで表示されます。

インデックス設定

"indexs":
[
        {index1},
        {index2},
        ……
        {indexn}
]

リスト内の各項目は、完全なインデックス設定です。サポートされているインデックスタイプの詳細については、「転置インデックス」をご参照ください。

属性設定

"attributes": [
  "user_id", 
  "product_id", 
  "category"
]

フォワードインデックス用のフィールドのリストです。すべてのフィールドは fields セクションで宣言する必要があります。TEXT を除くすべてのフィールドタイプが、属性をサポートします。

注:

TIME、DATE、および TIMESTAMP 型のフォワードインデックスにおけるストレージ形式は、次のとおりです。

  • DATE:1970 年 1 月 1 日から指定された日付までの日数で、4 バイトの単一値として保存されます。86,400,000 (1 日あたりのミリ秒) を乗算してタイムスタンプに変換できます。

  • TIME:00:00:00 から指定された時刻までのミリ秒数で、4 バイトの単一値として保存されます。

  • TIMESTAMP:1970 年 1 月 1 日から指定されたタイムスタンプまでのミリ秒数で、8 バイトの単一値として保存されます。

サマリー設定

"summarys":
{
        "summary_fields":["id", "company_id", "subject", "cat_id"],
        "compress":false 
}
  • summary_fields:サマリーに含めるフィールドです。すべてのフィールドタイプがサポートされており、フィールドは fields セクションで宣言する必要があります。

  • compress:zlib を使用してサマリーを圧縮するかどうかを指定します。デフォルト値:false

辞書設定

"dictionaries":[
    {
        "dictionary_name":"bitmap1",
        "content":"a;an"
    },
    {
        "dictionary_name":"bitmap2",
        "content":"of;and"
    }
]
  • dictionary_name:辞書の名前です。

  • content:辞書内の単語で、セミコロン (;) で区切られます。

アダプティブ辞書設定

"adaptive_dictionaries":[
    {
        "adaptive_dictionary_name":"df",
        "dict_type":"DOC_FREQUENCY",
        "threshold":1500000
    },
    {
        "adaptive_dictionary_name":"percent",
        "dict_type":"PERCENT",
        "threshold":30
    },
    {
        "adaptive_dictionary_name":"size",
        "dict_type":"INDEX_SIZE"
    }
]
  • adaptive_dictionary_name:アダプティブ高頻度辞書ルールの名前です。

  • dict_type:アダプティブ高頻度辞書のルールタイプです。次の 3 つのタイプが利用可能です。

  • DOC_FREQUENCY:タームのドキュメント頻度 (df) がしきい値以上の場合、そのタームは高頻度ワードと見なされます。

  • PERCENT:(df / totalDocCount) * 100 がしきい値以上の場合、そのタームは高頻度ワードと見なされます。

  • INDEX_SIZE:生成されたビットマップインデックスのサイズが元のインデックスのサイズよりも小さい場合、そのタームは高頻度ワードと見なされます。

注:

列挙可能なターム (a、b、c など) を持ち、クエリ頻度が低い転置インデックスフィールドについては、アダプティブビットマップルールを INDEX_SIZE に設定してください。クエリ頻度が高く、列挙不可能なタームを持つ転置インデックスについては、アダプティブビットマップルールを PERCENT または DOC_FREQUENCY に設定し、パフォーマンステストの結果に基づいてしきい値を選択してください。一般的なガイドラインとして、しきい値は、ドキュメント総数の 5% に設定できます。たとえば、ドキュメントが 1,000 万件ある場合、DOC_FREQUENCY のしきい値を 500,000 に、PERCENT のしきい値を 5 に設定します。