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

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