版本: 6.8-7.8
简而言之,当Elasticsearch查询中使用了不允许用于转义的字符时,就会出现此错误。Elasticsearch在其查询语法中使用某些特殊字符,如果这些字符没有正确转义,就会导致错误。要解决此问题,请确保在查询中使用正确的转义字符。您还可以使用Elasticsearch查询字符串语法来了解如何正确格式化查询。此外,检查数据输入中是否存在可能导致此错误的意外字符。
日志上下文 #
日志"Char [{}] cannot be used for escaping"的类名是 ExpressionBuilder.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入背景的人参考:
throw new ParsingException(source(escapeCtx); "A character not a string required for escaping; found [{}]"; escapeString);
} else if (escapeString.length() == 1) {
escape = escapeString.charAt(0);
// these chars already have a meaning
if (escape == '*' || escape == '%' || escape == '_') {
throw new ParsingException(source(escapeCtx.escape); "Char [{}] cannot be used for escaping"; escape);
}
// lastly validate that escape chars (if present) are followed by special chars
for (int i = 0; i < pattern.length(); i++) {
char current = pattern.charAt(i);
if (current == escape) {





