--- title: "在指定偏移处期望十六进制字符但发现了其他字符 - 如何解决此 Elasticsearch 异常" date: 2026-03-14 lastmod: 2026-03-14 description: "当 Elasticsearch 在期望十六进制字符的位置遇到非十六进制字符时,会引发此错误。通常由于数据输入错误或请求格式不正确导致。" tags: ["十六进制", "数据格式", "解析错误"] summary: " 版本: 6.8-8.9 简要来说,当 Elasticsearch 在期望十六进制字符的位置遇到非十六进制字符时,就会发生此错误。这可能是由于数据输入不正确或请求格式不正确导致的。要解决此问题,首先应该检查导致错误的数据或请求。确保它只包含有效的十六进制字符(0-9,A-F)。如果错误仍然存在,可能是由于您的 Elasticsearch 版本中的 bug 导致的。考虑更新到最新的稳定版本。 日志上下文 # 日志 “{}expected hexadecimal at offset[{}]; found [{}]” 的类名是 ExpressionBuilder.java。我们从 Elasticsearch 源代码中提取了以下内容,以供那些深入了解上下文的人参考: } else if (pos > i) { break; } } if (inspect && HEXA.indexOf(lowerCase.charAt(i)) < 0) { throw new ParsingException(source, "{}expected hexadecimal at offset[{}]; found [{}]", errorPrefix, i, string.charAt(i)); } } return new Literal(source(ctx), string, DataTypes.KEYWORD); " --- > **版本:** 6.8-8.9 简要来说,当 Elasticsearch 在期望十六进制字符的位置遇到非十六进制字符时,就会发生此错误。这可能是由于数据输入不正确或请求格式不正确导致的。要解决此问题,首先应该检查导致错误的数据或请求。确保它只包含有效的十六进制字符(0-9,A-F)。如果错误仍然存在,可能是由于您的 Elasticsearch 版本中的 bug 导致的。考虑更新到最新的稳定版本。 日志上下文 ----------- 日志 "{}expected hexadecimal at offset[{}]; found [{}]" 的类名是 [ExpressionBuilder.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,以供那些深入了解上下文的人参考: ```java } else if (pos > i) { break; } } if (inspect && HEXA.indexOf(lowerCase.charAt(i)) < 0) { throw new ParsingException(source, "{}expected hexadecimal at offset[{}]; found [{}]", errorPrefix, i, string.charAt(i)); } } return new Literal(source(ctx), string, DataTypes.KEYWORD); ```