映射限制设置编辑

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

index.mapping.total_fields.limit

索引中的最大字段数。字段和对象映射以及字段别名都计入此限制。映射的运行时字段也计入此限制。默认值为 1000

此限制是为了防止映射和搜索变得过大。较高的值会导致性能下降和内存问题,尤其是在负载高或资源少的集群中。

如果您提高此设置,我们建议您也提高 indices.query.bool.max_clause_count 设置,该设置限制查询中子句的最大数量。

如果您的字段映射包含一组很大的任意键,请考虑使用 扁平化 数据类型,或将索引设置 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