--- title: "文档映射类型名称不能以下划线开头 – 如何解决此 Elasticsearch 异常" date: 2026-03-03 lastmod: 2026-03-03 description: "当尝试在 Elasticsearch 中创建以下划线开头的映射类型时出现此错误,因为 Elasticsearch 保留以下划线开头的名称用于内部操作。" tags: ["映射类型", "命名规范", "异常处理"] summary: "版本: 6.8-7.17 简要来说,当您尝试在 Elasticsearch 中创建一个以下划线('_')开头的映射类型时,就会出现此错误。Elasticsearch 将以下划线开头的名称保留用于内部操作。要解决此问题,请将映射类型重命名为不以以下划线开头的名称。同时,确保新名称符合 Elasticsearch 的命名规范。需要注意的是,映射类型在 Elasticsearch 7.x 中已被弃用,在 8.x 中已被移除,因此请考虑重构数据以避免使用它们。 日志上下文 # 日志 “Document mapping type name can’t start with ‘_'; found: [” + mappingType + “]” 的类名是 MetadataMappingService.java。我们为那些寻求深入了解上下文的人从 Elasticsearch 源代码中提取了以下内容: assert mappingType != null; if (MapperService.DEFAULT_MAPPING.equals(mappingType) == false && MapperService.SINGLE_MAPPING_NAME.equals(mappingType) == false && mappingType.charAt(0) == '_') { throw new InvalidTypeNameException("Document mapping type name can't start with '_'; found: [" + mappingType + "]"); } Metadata." --- > **版本:** 6.8-7.17 简要来说,当您尝试在 Elasticsearch 中创建一个以下划线('_')开头的映射类型时,就会出现此错误。Elasticsearch 将以下划线开头的名称保留用于内部操作。要解决此问题,请将映射类型重命名为不以以下划线开头的名称。同时,确保新名称符合 Elasticsearch 的命名规范。需要注意的是,映射类型在 Elasticsearch 7.x 中已被弃用,在 8.x 中已被移除,因此请考虑重构数据以避免使用它们。 日志上下文 ----------- 日志 "Document mapping type name can't start with '\_'; found: [" + mappingType + "]" 的类名是 [MetadataMappingService.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们为那些寻求深入了解上下文的人从 Elasticsearch 源代码中提取了以下内容: ```java assert mappingType != null; if (MapperService.DEFAULT_MAPPING.equals(mappingType) == false && MapperService.SINGLE_MAPPING_NAME.equals(mappingType) == false && mappingType.charAt(0) == '_') { throw new InvalidTypeNameException("Document mapping type name can't start with '_'; found: [" + mappingType + "]"); } Metadata.Builder builder = Metadata.builder(metadata); boolean updated = false; for (IndexMetadata indexMetadata : updateList) { boolean updatedMapping = false; ```