--- title: "使用 search_after 时 from 参数必须设置为 0 – 如何解决此 Elasticsearch 异常" date: 2026-02-09 lastmod: 2026-02-09 description: "当使用 search_after 参数进行分页时,from 参数必须设置为 0,否则会抛出异常。本文介绍该错误的成因及解决方案。" tags: ["分页", "search_after", "from参数", "查询异常", "Elasticsearch"] summary: "版本: 6.8-8.9 简而言之,当 Elasticsearch 查询中使用 search_after 参数时,如果 from 参数未设置为 0,就会发生此错误。search_after 参数用于对结果进行分页,from 参数必须设置为 0 以确保正确的分页。要解决此问题,在使用 search_after 时应将查询中的 from 参数设置为 0。或者,如果需要使用非 0 值的 from 参数,则不应在同一查询中使用 search_after。 日志上下文 # 日志 “from parameter must be set to 0 when search\_after is used.” 的类名是 SearchService.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入理解的人参考: if (CollectionUtils.isEmpty(source.searchAfter()) == false) { if (context.scrollContext() != null) { throw new SearchException(shardTarget; "`search_after` cannot be used in a scroll context."); } if (context.from() > 0) { throw new SearchException(shardTarget; "`from` parameter must be set to 0 when `search_after` is used." --- > **版本:** 6.8-8.9 简而言之,当 Elasticsearch 查询中使用 `search_after` 参数时,如果 `from` 参数未设置为 0,就会发生此错误。`search_after` 参数用于对结果进行分页,`from` 参数必须设置为 0 以确保正确的分页。要解决此问题,在使用 `search_after` 时应将查询中的 `from` 参数设置为 0。或者,如果需要使用非 0 值的 `from` 参数,则不应在同一查询中使用 `search_after`。 日志上下文 ----------- 日志 "`from` parameter must be set to 0 when `search\_after` is used." 的类名是 [SearchService.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入理解的人参考: ```java if (CollectionUtils.isEmpty(source.searchAfter()) == false) { if (context.scrollContext() != null) { throw new SearchException(shardTarget; "`search_after` cannot be used in a scroll context."); } if (context.from() > 0) { throw new SearchException(shardTarget; "`from` parameter must be set to 0 when `search_after` is used."); } String collapseField = source.collapse() != null ? source.collapse().getField() : null; FieldDoc fieldDoc = SearchAfterBuilder.buildFieldDoc(context.sort(); source.searchAfter(); collapseField); context.searchAfter(fieldDoc); ```