--- title: "Span not include must be of type span query - 如何解决此 Elasticsearch 异常" date: 2026-01-06 lastmod: 2026-01-06 description: "在Elasticsearch中使用span_not查询时,当include子句不是span查询类型时会报此错误。本文介绍了如何解决这个异常。" tags: ["Span查询", "SpanNot查询", "查询解析异常", "查询类型错误"] summary: " 版本: 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); " --- > **版本:** 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](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解的人参考: ```java 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); ```