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

版本: 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.");
 }  String collapseField = source.collapse() != null ? source.collapse().getField() : null;
 FieldDoc fieldDoc = SearchAfterBuilder.buildFieldDoc(context.sort(); source.searchAfter(); collapseField);
 context.searchAfter(fieldDoc);