複数値属性の重複除去
デフォルトでは、複数値属性の値は昇順にソートされます。複数値属性のオフセットは昇順にソートされます。実際のビジネスシナリオでは、多数のドキュメントが属性の重複値に対応しています。複数値属性の重複除去を有効にすると、インデックスの重複値を除去できます。このようにして、生成されるインデックスのサイズを削減できます。
複数値属性の重複除去は、複数値属性とデータ型がSTRINGの単一値フィールドの重複除去に使用できます。
システムが重複除去を実行すると、データ重複除去用の辞書などのデータ構造が使用されるため、ビルド操作とマージ操作を実行するためのメモリオーバーヘッドが増加します。重複率が低い場合は、複数値属性の重複除去を有効にしないことをお勧めします。
等値圧縮
実際のビジネスシナリオでは、単一値属性と複数値属性のオフセット値が特定のフィールドに基づいてグローバルにソートされた後、重複値が順番に表示されることがよくあります。重複値を圧縮すると、大きな記憶領域が節約されます。等値圧縮では、より少ないビット数を使用して重複値を格納します。このようにして、対応するインデックスを圧縮できます。
等値圧縮は、単一値属性と複数値属性のオフセットファイルに使用されます。データ型がSTRINGの複数値属性と単一値属性に対して、複数値属性の重複除去と等値圧縮を有効にできます。
オフセットファイルの自己適応ストレージ
各複数値属性は分離された空間に格納されるため、複数値属性の数は生成されるオフセットファイルの数と同じです。システムが各オフセットファイルの格納に8ビットを使用する場合、ストレージのオーバーヘッドが高くなります。この問題を解決するために、OpenSearchはオフセットファイルの自己適応ストレージをサポートしています。すべてのオフセットファイルのサイズが4 GB未満の場合、システムは4ビットを使用してオフセットファイルを格納します。構成は不要です。
サンプルコード
{
...
"fields":[
{
"field_name":"category",
"field_type":"INTEGER",
"multi_value":true,
"compress_type":"uniq|equal" // 複数値属性の重複除去と等値圧縮を有効にする
},
{
"field_name":"price",
"field_type":"INTEGER",
"user_defined_param":{
"key":"hello"
}
}
]
...
}
multi_value: フィールドが複数値フィールドかどうかを指定します。有効な値:trueおよびfalse。デフォルト値:false。
compress_type: フィールドを属性として格納するときに使用する圧縮方法を指定します。デフォルトでは、compress_typeパラメータの値は空の文字列に設定されています。値が空の文字列に設定されている場合、転置インデックスは圧縮されません。有効な値:
複数値属性の重複除去を実行する場合は、compress_typeの値をuniqに設定します。
等値圧縮を実行する場合は、compress_typeの値をequalに設定します。
パッチファイルベースの圧縮を実行する場合は、compress_typeの値をpatch_compressに設定します。
compress_typeに複数の値を指定し、値を縦棒(|)で区切ることができます。たとえば、compress_typeの値をuniq | equalに設定できます。
FLOATデータ型の複数値属性を圧縮する場合は、compress_typeの値をblock_fp、fp16、またはint8#Nに設定できます。Nは、FLOATデータの値の範囲を指定する値です。値の範囲は-Nから+Nです。
FLOATデータ型の単一値属性を圧縮する場合は、compress_typeの値をfp16またはint8#Nに設定できます。FLOATデータ型の単一値属性に対して、fp16またはint8#Nをuniq | equalと一緒に使用できないことに注意してください。