版本: 6.8-8.9
简而言之,当Elasticsearch操作中提供的百分比值超出有效范围0-100时,会发生此错误。这可能是由于编程错误或用户输入不正确导致的。要解决此问题,您应在Elasticsearch操作中使用百分比值之前对其进行验证。确保百分比值在可接受的范围内。如果错误仍然存在,请检查代码中是否存在任何百分比值的计算错误或解释错误。
日志上下文 #
日志"percentage should be in [0-100]; got [{}]“的类名是 MemorySizeValue.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人使用:
if (sValue != null && sValue.endsWith("%")) {
final String percentAsString = sValue.substring(0, sValue.length() - 1);
try {
final double percent = Double.parseDouble(percentAsString);
if (percent < 0 || percent > 100) {
throw new ElasticsearchParseException("percentage should be in [0-100]; got [{}]", percentAsString);
}
return ByteSizeValue.ofBytes((long) ((percent / 100) * JvmInfo.jvmInfo().getMem().getHeapMax().getBytes()));
} catch (NumberFormatException e) {
throw new ElasticsearchParseException("failed to parse [{}] as a double", e, percentAsString);
}
}





