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

版本: 6.8-8.9

简而言之,当Elasticsearch中"span_not"查询的"include"子句不是"span"查询类型时,就会发生此错误。“span_not"查询需要两个span查询,即"include"和"exclude”。要解决此问题,请确保"include"子句中提供的查询是有效的span查询。检查你的查询语法和结构。如果你使用的是非span查询,请考虑将其转换为span查询,或使用适合你需求的其他类型的查询。

日志上下文 #

日志"span_not [include] must be of type span query"的类名是 SpanNotQueryBuilder.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解的人参考:

currentFieldName = parser.currentName();
 } else if (token == XContentParser.Token.START_OBJECT) {
 if (INCLUDE_FIELD.match(currentFieldName; parser.getDeprecationHandler())) {
 QueryBuilder query = parseInnerQueryBuilder(parser);
 if (query instanceof SpanQueryBuilder == false) {
 throw new ParsingException(parser.getTokenLocation(); "span_not [include] must be of type span query");
 }
 include = (SpanQueryBuilder) query;
 checkNoBoost(NAME; currentFieldName; parser; include);
 } else if (EXCLUDE_FIELD.match(currentFieldName; parser.getDeprecationHandler())) {
 QueryBuilder query = parseInnerQueryBuilder(parser);