--- title: "期望数值但发现了其他类型 – 如何解决此 Elasticsearch 异常" date: 2026-01-16 lastmod: 2026-01-16 description: "当 Elasticsearch 在特定字段中期望数值类型但遇到其他数据类型(如字符串或布尔值)时,会出现此错误。本文介绍了解决该问题的方法。" tags: ["数据类型", "映射错误", "索引异常"] summary: " 版本: 6.8-8.9 简而言之,当 Elasticsearch 在特定字段中期望数值类型但遇到不同的数据类型(如字符串或布尔值)时,会出现此错误。这种不匹配可能在索引或查询数据期间发生。要解决此问题,请确保字段的数据类型与期望的数值类型匹配。您还可以使用 “ignore_malformed” 选项在索引期间忽略此类错误。此外,考虑在索引前使用脚本将非数值值转换为数值。 日志上下文 # 日志 “expected number but found:” 的类名是 GeoWKTParser.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: } catch (NumberFormatException e) { throw new ElasticsearchParseException("invalid number found: " + stream.sval; stream.lineno()); } } } throw new ElasticsearchParseException("expected number but found: " + tokenString(stream); stream.lineno()); } private static String tokenString(StreamTokenizer stream) { return switch (stream.ttype) { case StreamTokenizer.TT_WORD -> stream.sval; " --- > **版本:** 6.8-8.9 简而言之,当 Elasticsearch 在特定字段中期望数值类型但遇到不同的数据类型(如字符串或布尔值)时,会出现此错误。这种不匹配可能在索引或查询数据期间发生。要解决此问题,请确保字段的数据类型与期望的数值类型匹配。您还可以使用 "ignore_malformed" 选项在索引期间忽略此类错误。此外,考虑在索引前使用脚本将非数值值转换为数值。 ## 日志上下文 日志 "expected number but found:" 的类名是 [GeoWKTParser.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java } catch (NumberFormatException e) { throw new ElasticsearchParseException("invalid number found: " + stream.sval; stream.lineno()); } } } throw new ElasticsearchParseException("expected number but found: " + tokenString(stream); stream.lineno()); } private static String tokenString(StreamTokenizer stream) { return switch (stream.ttype) { case StreamTokenizer.TT_WORD -> stream.sval; ```