--- title: "Search after 不能在滚动上下文中使用——如何解决此 Elasticsearch 异常" date: 2026-01-01 lastmod: 2026-01-01 description: "在 Elasticsearch 中尝试在滚动搜索中使用 search_after 参数时会报错。滚动和 search_after 是两种不同的处理大数据集的方法,不能同时使用。" tags: ["搜索异常", "分页查询", "滚动查询", "search_after"] summary: "版本: 6.8-8.9 简而言之,当您尝试在 Elasticsearch 的滚动搜索中使用 search_after 参数时,会出现此错误。滚动(Scroll)和 search_after 是两种不同的处理大数据集的方法,它们不能一起使用。要解决此问题,您可以在常规搜索中使用 search_after 参数,或者使用不带 search_after 参数的滚动 API。确保选择最适合您用例的方法。 日志上下文 # 日志"search_after 不能在滚动上下文中使用。“的类名是 SearchService.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景的人参考: if (source.stats() != null) { context.groupStats(source.stats()); } 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` 参数时,会出现此错误。滚动(Scroll)和 `search_after` 是两种不同的处理大数据集的方法,它们不能一起使用。要解决此问题,您可以在常规搜索中使用 `search_after` 参数,或者使用不带 `search_after` 参数的滚动 API。确保选择最适合您用例的方法。 日志上下文 ----------- 日志"`search_after` 不能在滚动上下文中使用。"的类名是 [SearchService.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景的人参考: ```java if (source.stats() != null) { context.groupStats(source.stats()); } 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."); } ```