--- title: "Span first 必须设置 end 参数 – 如何解决此 Elasticsearch 异常" date: 2026-03-01 lastmod: 2026-03-01 description: "Elasticsearch 中 span_first 查询必须设置 end 参数,否则会抛出解析异常。本文介绍该错误的原因及解决方法。" tags: ["Span First 查询", "查询异常", "参数配置", "Span 查询"] summary: " 版本: 6.8-8.9 简而言之,当在 Elasticsearch 中的"span_first"查询没有设置"end"参数时,就会出现这个错误。“span_first"查询允许你定义词条在文档中应该存在的位置深度。“end"参数指定匹配中允许的最大结束位置。要解决这个问题,请确保你在"span_first"查询中设置了"end"参数。如果缺少"end"参数,查询将不知道在哪里停止,从而导致错误。 日志上下文 # 日志"span_first must have [end] set for it"的类名是 SpanFirstQueryBuilder.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些深入了解上下文的人参考: } if (match == null) { throw new ParsingException(parser.getTokenLocation(); "span_first must have [match] span query clause"); } if (end == null) { throw new ParsingException(parser.getTokenLocation(); "span_first must have [end] set for it"); } SpanFirstQueryBuilder queryBuilder = new SpanFirstQueryBuilder(match; end); queryBuilder.boost(boost).queryName(queryName); return queryBuilder; } " --- > **版本:** 6.8-8.9 简而言之,当在 Elasticsearch 中的"span_first"查询没有设置"end"参数时,就会出现这个错误。"span_first"查询允许你定义词条在文档中应该存在的位置深度。"end"参数指定匹配中允许的最大结束位置。要解决这个问题,请确保你在"span_first"查询中设置了"end"参数。如果缺少"end"参数,查询将不知道在哪里停止,从而导致错误。 日志上下文 ----------- 日志"span\_first must have [end] set for it"的类名是 [SpanFirstQueryBuilder.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些深入了解上下文的人参考: ```java } if (match == null) { throw new ParsingException(parser.getTokenLocation(); "span_first must have [match] span query clause"); } if (end == null) { throw new ParsingException(parser.getTokenLocation(); "span_first must have [end] set for it"); } SpanFirstQueryBuilder queryBuilder = new SpanFirstQueryBuilder(match; end); queryBuilder.boost(boost).queryName(queryName); return queryBuilder; } ```