版本: 6.8-8.9
简而言之,当 Elasticsearch 由于语法不正确或结构问题而无法理解内部查询时,会发生此错误。这可能是由于括号缺失或位置错误、字段名不正确或查询类型错误导致的。要解决此问题,首先应该检查查询的语法以确保它是正确的。如果语法正确,请验证内部查询中使用的字段名和查询类型是否有效。最后,确保内部查询的结构是正确的,包括括号的位置。
日志上下文 #
日志 “Could not parse inner query” 的类名是 QueryRescorerBuilder.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些需要深入了解上下文的人参考:
static {
QUERY_RESCORE_PARSER.declareObject(InnerBuilder::setQueryBuilder, (p, c) -> {
try {
return parseTopLevelQuery(p);
} catch (IOException e) {
throw new ParsingException(p.getTokenLocation(), "Could not parse inner query", e);
}
}, RESCORE_QUERY_FIELD);
QUERY_RESCORE_PARSER.declareFloat(InnerBuilder::setQueryWeight, QUERY_WEIGHT_FIELD);
QUERY_RESCORE_PARSER.declareFloat(InnerBuilder::setRescoreQueryWeight, RESCORE_QUERY_WEIGHT_FIELD);
QUERY_RESCORE_PARSER.declareString((struct, value) -> struct.setScoreMode(QueryRescoreMode.fromString(value)), SCORE_MODE_FIELD);





