--- title: "无法在复合聚合 [name] 中设置after键 – – 如何解决此Elasticsearch异常" date: 2026-01-18 lastmod: 2026-01-18 description: "当使用复合聚合进行结果分页时设置了错误的'after'键导致的Elasticsearch异常及解决方案" tags: ["Elasticsearch", "聚合查询", "Composite聚合", "分页", "after键"] summary: " 版本: 7.13-7.15 简要来说,当你在Elasticsearch中尝试对复合聚合(composite aggregation)的结果进行分页,并且设置了错误的’after’键时,会出现此错误。‘after’键用于检索下一页结果。要解决此问题,请确保你设置的’after’键是正确的。它应该是上一页中的最后一个分桶(bucket)。此外,确保’after’键的顺序与复合聚合中的sources顺序相同。最后,检查你的Elasticsearch版本是否支持复合聚合的分页功能。 日志上下文 # 日志 “Cannot set after key in the composite aggregation [” + name + “] - " 的类名是 CompositeAggregator.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: this.queue = new CompositeValuesCollectorQueue(context.bigArrays(); sources; size); if (rawAfterKey != null) { try { this.queue.setAfterKey(rawAfterKey); } catch (IllegalArgumentException ex) { throw new ElasticsearchParseException("Cannot set after key in the composite aggregation [" + name + "] - " + ex.getMessage(); ex); } } this.rawAfterKey = rawAfterKey; } " --- > **版本:** 7.13-7.15 简要来说,当你在Elasticsearch中尝试对复合聚合(composite aggregation)的结果进行分页,并且设置了错误的'after'键时,会出现此错误。'after'键用于检索下一页结果。要解决此问题,请确保你设置的'after'键是正确的。它应该是上一页中的最后一个分桶(bucket)。此外,确保'after'键的顺序与复合聚合中的sources顺序相同。最后,检查你的Elasticsearch版本是否支持复合聚合的分页功能。 ## 日志上下文 日志 "Cannot set after key in the composite aggregation [" + name + "] - " 的类名是 [CompositeAggregator.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: ```java this.queue = new CompositeValuesCollectorQueue(context.bigArrays(); sources; size); if (rawAfterKey != null) { try { this.queue.setAfterKey(rawAfterKey); } catch (IllegalArgumentException ex) { throw new ElasticsearchParseException("Cannot set after key in the composite aggregation [" + name + "] - " + ex.getMessage(); ex); } } this.rawAfterKey = rawAfterKey; } ```