マッピング制限設定

以下の設定を使用して、フィールドマッピングの数(手動または動的に作成されたもの)を制限し、ドキュメントがマッピングの爆発を引き起こすのを防ぎます:

  • index.mapping.total_fields.limit
  • インデックス内のフィールドの最大数。フィールドおよびオブジェクトのマッピング、ならびにフィールドエイリアスはこの制限にカウントされます。マッピングされたランタイムフィールドもこの制限にカウントされます。デフォルト値は 1000 です。
    この制限は、マッピングと検索が大きくなりすぎるのを防ぐために設けられています。高い値は、特に負荷が高いクラスターやリソースが少ない場合に、パフォーマンスの低下やメモリの問題を引き起こす可能性があります。
    この設定を増やす場合は、クエリ内の最大句数を制限する indices.query.bool.max_clause_count 設定も増やすことをお勧めします。
    フィールドマッピングに大きな任意のキーのセットが含まれている場合は、flattened データ型を使用するか、インデックス設定 index.mapping.total_fields.ignore_dynamic_beyond_limittrue に設定することを検討してください。
  • 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 です。