--- title: "FieldType名称配置为仅接受点数据但传入其他数据类型——如何解决此Elasticsearch异常" date: 2026-02-27 lastmod: 2026-02-27 description: "当Elasticsearch中的字段配置为仅接受点数据类型,但尝试索引不同的数据类型时,会出现此错误。本文介绍如何解决此字段类型配置异常。" tags: ["字段类型", "数据类型", "映射异常", "GeoShape"] summary: " 版本: 6.8-7.15 简而言之,当Elasticsearch中的字段被配置为仅接受点(point)数据类型,但尝试索引不同的数据类型时,就会发生此错误。期望的数据类型与实际数据类型之间的不匹配导致了此错误。要解决此问题,您可以更改Elasticsearch索引中字段的数据类型以匹配传入的数据,或者在索引之前将传入的数据转换为匹配预期的点数据类型。此外,确保索引中字段的映射定义正确。 日志上下文 # 日志"[{" + fieldType().name() + “}] is configured for points only but a “类名是 LegacyGeoShapeFieldMapper.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解的人参考: for (Shape s : shapes) { context.doc().addAll(Arrays.asList(fieldType().defaultPrefixTreeStrategy().createIndexableFields(s))); } return; } else if (shape instanceof Point == false) { throw new MapperParsingException("[{" + fieldType().name() + "}] is configured for points only but a " + ((shape instanceof JtsGeometry) ? ((JtsGeometry)shape).getGeom().getGeometryType() : shape.getClass()) + " was found"); } } context.doc().addAll(Arrays.asList(fieldType().defaultPrefixTreeStrategy().createIndexableFields(shape))); " --- > **版本:** 6.8-7.15 简而言之,当Elasticsearch中的字段被配置为仅接受点(point)数据类型,但尝试索引不同的数据类型时,就会发生此错误。期望的数据类型与实际数据类型之间的不匹配导致了此错误。要解决此问题,您可以更改Elasticsearch索引中字段的数据类型以匹配传入的数据,或者在索引之前将传入的数据转换为匹配预期的点数据类型。此外,确保索引中字段的映射定义正确。 日志上下文 ----------- 日志"[{" + fieldType().name() + "}] is configured for points only but a "类名是[LegacyGeoShapeFieldMapper.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解的人参考: ```java for (Shape s : shapes) { context.doc().addAll(Arrays.asList(fieldType().defaultPrefixTreeStrategy().createIndexableFields(s))); } return; } else if (shape instanceof Point == false) { throw new MapperParsingException("[{" + fieldType().name() + "}] is configured for points only but a " + ((shape instanceof JtsGeometry) ? ((JtsGeometry)shape).getGeom().getGeometryType() : shape.getClass()) + " was found"); } } context.doc().addAll(Arrays.asList(fieldType().defaultPrefixTreeStrategy().createIndexableFields(shape))); ```