映射限制设置

edit

映射限制设置

edit

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

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
索引中不同嵌套映射的最大数量。嵌套类型应仅在特殊情况下使用,当需要独立查询对象数组时。为了防止设计不良的映射,此设置限制了每个索引的唯一嵌套类型的数量。默认值为50
index.mapping.nested_objects.limit
单个文档在所有嵌套类型中可以包含的最大嵌套JSON对象数量。此限制有助于防止当文档包含过多嵌套对象时出现内存不足错误。默认值为10000
index.mapping.field_name_length.limit
设置字段名称的最大长度。此设置并不是真正解决映射爆炸的问题,但如果您想限制字段长度,它可能仍然有用。 通常不需要设置此设置。默认值是可以的,除非用户开始添加大量具有非常长名称的字段。默认值为 Long.MAX_VALUE(无限制)。
index.mapping.dimension_fields.limit
(动态, 整数) 索引的最大时间序列维度数量。默认为32768