📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 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);
 }
 }