映射限制设置

编辑

使用以下设置来限制字段映射的数量(手动创建或动态创建),并防止文档导致映射爆炸。

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(默认值)时,尝试向映射添加动态字段的文档的索引请求将失败,并显示消息 超出总字段限制 [X]。当设置为 true 时,索引请求不会失败。相反,超出限制的字段不会添加到映射中,类似于 dynamic: false。未添加到映射中的字段将添加到 _ignored 字段中。默认值为 false
index.mapping.depth.limit
字段的最大深度,以内部对象的数量来衡量。例如,如果所有字段都在根对象级别定义,则深度为 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