マッピング制限設定
以下の設定を使用して、フィールドマッピングの数(手動または動的に作成されたもの)を制限し、ドキュメントがマッピングの爆発を引き起こすのを防ぎます:
index.mapping.total_fields.limit
- インデックス内のフィールドの最大数。フィールドおよびオブジェクトのマッピング、ならびにフィールドエイリアスはこの制限にカウントされます。マッピングされたランタイムフィールドもこの制限にカウントされます。デフォルト値は
1000
です。
この制限は、マッピングと検索が大きくなりすぎるのを防ぐために設けられています。高い値は、特に負荷が高いクラスターやリソースが少ない場合に、パフォーマンスの低下やメモリの問題を引き起こす可能性があります。
この設定を増やす場合は、クエリ内の最大句数を制限するindices.query.bool.max_clause_count
設定も増やすことをお勧めします。
フィールドマッピングに大きな任意のキーのセットが含まれている場合は、flattened データ型を使用するか、インデックス設定index.mapping.total_fields.ignore_dynamic_beyond_limit
をtrue
に設定することを検討してください。 index.mapping.total_fields.ignore_dynamic_beyond_limit
- この設定は、動的にマッピングされたフィールドが総フィールド制限を超える場合に何が起こるかを決定します。
false
(デフォルト)に設定されている場合、動的フィールドをマッピングに追加しようとするドキュメントのインデックスリクエストは、メッセージLimit of total fields [X] has been exceeded
で失敗します。true
に設定されている場合、インデックスリクエストは失敗しません。代わりに、制限を超えるフィールドはマッピングに追加されず、dynamic: false
に似た動作をします。マッピングに追加されなかったフィールドは、_ignored
フィールド に追加されます。デフォルト値はfalse
です。 index.mapping.depth.limit
フィールドの最大深さで、内部オブジェクトの数として測定されます。たとえば、すべてのフィールドがルートオブジェクトレベルで定義されている場合、深さは
1
です。オブジェクトマッピングが1つある場合、深さは2
です。デフォルトは20
です。index.mapping.nested_fields.limit
インデックス内の異なる
nested
マッピングの最大数。nested
タイプは、オブジェクトの配列を互いに独立してクエリする必要がある特別な場合にのみ使用する必要があります。設計が不十分なマッピングから保護するために、この設定はインデックスごとのユニークなnested
タイプの数を制限します。デフォルトは50
です。index.mapping.nested_objects.limit
- 単一のドキュメントがすべての
nested
タイプにわたって含むことができるネストされたJSONオブジェクトの最大数。この制限は、ドキュメントがあまりにも多くのネストされたオブジェクトを含む場合のメモリ不足エラーを防ぐのに役立ちます。デフォルトは10000
です。 index.mapping.field_name_length.limit
- フィールド名の最大長の設定。この設定は、実際にはマッピングの爆発に対処するものではありませんが、フィールドの長さを制限したい場合には役立つかもしれません。この設定を設定する必要は通常ありません。ユーザーが非常に長い名前のフィールドを大量に追加し始めない限り、デフォルトで問題ありません。デフォルトは
Long.MAX_VALUE
(制限なし)です。 index.mapping.dimension_fields.limit
- (動的、整数)インデックスの タイムシリーズ次元 の最大数。デフォルトは
32768
です。