--- title: "发现两个聚合类型定义 – 如何解决此 Elasticsearch 异常" date: 2026-02-18 lastmod: 2026-02-18 description: "在 Elasticsearch 查询中出现两个聚合类型定义时的异常原因和解决方法" tags: ["聚合", "查询异常", "解析错误"] summary: " 版本: 6.8-7.15 简而言之,当同一查询中存在两个聚合类型定义时,就会发生此错误。Elasticsearch 不允许在单个查询中使用多个相同类型的聚合。要解决此问题,您可以删除其中一个聚合或重命名其中一个以进行区分。或者,如果它们相关联,您可以将一个聚合嵌套在另一个聚合中。最后,确保查询的语法和结构正确,以避免此类冲突。 日志上下文 # 日志 “Found two aggregation type definitions in [” 的类名是 AggregatorFactories.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: } subFactories = parseAggregators(parser; level + 1); break; default: if (aggBuilder != null) { throw new ParsingException(parser.getTokenLocation(); "Found two aggregation type definitions in [" + aggregationName + "]: [" + aggBuilder.getType() + "] and [" + fieldName + "]"); } try { aggBuilder = parser.namedObject(BaseAggregationBuilder.class; fieldName; aggregationName); " --- > **版本:** 6.8-7.15 简而言之,当同一查询中存在两个聚合类型定义时,就会发生此错误。Elasticsearch 不允许在单个查询中使用多个相同类型的聚合。要解决此问题,您可以删除其中一个聚合或重命名其中一个以进行区分。或者,如果它们相关联,您可以将一个聚合嵌套在另一个聚合中。最后,确保查询的语法和结构正确,以避免此类冲突。 日志上下文 ----------- 日志 "Found two aggregation type definitions in [" 的类名是 [AggregatorFactories.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java } subFactories = parseAggregators(parser; level + 1); break; default: if (aggBuilder != null) { throw new ParsingException(parser.getTokenLocation(); "Found two aggregation type definitions in [" + aggregationName + "]: [" + aggBuilder.getType() + "] and [" + fieldName + "]"); } try { aggBuilder = parser.namedObject(BaseAggregationBuilder.class; fieldName; aggregationName); ```