版本: 7.8-8.9
简而言之,当 Elasticsearch 期望某个字段为数值类型但接收到非数值值时,会出现此错误。这可能是由于输入数据类型不正确或映射不匹配造成的。要解决此问题,请确保输入数据是正确的数值类型。如果错误仍然存在,请检查索引的映射以确保它与输入的数据类型匹配。如有必要,使用正确的映射重新索引数据。
日志上下文 #
日志 “{} must be a number” 的类名是 GenericPointParser.java。我们从 Elasticsearch 源代码中提取了以下内容,供寻求深入上下文的人参考:
private static double parseValidDouble(XContentSubParser subParser, String field) throws IOException {
try {
return switch (subParser.currentToken()) {
case VALUE_NUMBER, VALUE_STRING -> subParser.doubleValue(true);
default -> throw new ElasticsearchParseException("{} must be a number", field);
};
} catch (NumberFormatException e) {
throw new ElasticsearchParseException("[{}] must be a valid double value", e, field);
}
}





