--- title: "遇到多个权重分配——如何解决此 Elasticsearch 异常" date: 2026-03-28 lastmod: 2026-03-28 description: "当 Elasticsearch 在执行加权平均聚合时,单个文档被分配了多个权重值时会抛出此异常。需要使用脚本将每个文档的多个权重合并为单个值。" tags: ["聚合异常", "加权平均聚合", "函数评分查询"] summary: "版本: 6.8-7.15 简要来说,当 Elasticsearch 在函数评分查询期间尝试为单个字段分配多个权重时,就会发生此错误。这种情况通常发生在您错误地为同一字段定义了多个 weight 参数时。要解决此问题,您应该检查您的 function score 查询,确保每个字段只分配了一个权重。如果发现任何重复项,请相应地删除或调整它们。此外,请确保您的查询语法正确,并且不会因为语法错误而无意中分配了多个权重。 日志上下文 # 日志 “Encountered more than one weight for a” 的类名是 WeightedAvgAggregator.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: valueCompensations = bigArrays().grow(valueCompensations, bucket + 1); weightCompensations = bigArrays().grow(weightCompensations, bucket + 1); if (docValues.advanceExact(doc) && docWeights.advanceExact(doc)) { if (docWeights.docValueCount() > 1) { throw new AggregationExecutionException("Encountered more than one weight for a " + "single document. Use a script to combine multiple weights-per-doc into a single value." --- > **版本:** 6.8-7.15 简要来说,当 Elasticsearch 在函数评分查询期间尝试为单个字段分配多个权重时,就会发生此错误。这种情况通常发生在您错误地为同一字段定义了多个 weight 参数时。要解决此问题,您应该检查您的 function score 查询,确保每个字段只分配了一个权重。如果发现任何重复项,请相应地删除或调整它们。此外,请确保您的查询语法正确,并且不会因为语法错误而无意中分配了多个权重。 日志上下文 ----------- 日志 "Encountered more than one weight for a" 的类名是 [WeightedAvgAggregator.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java valueCompensations = bigArrays().grow(valueCompensations, bucket + 1); weightCompensations = bigArrays().grow(weightCompensations, bucket + 1); if (docValues.advanceExact(doc) && docWeights.advanceExact(doc)) { if (docWeights.docValueCount() > 1) { throw new AggregationExecutionException("Encountered more than one weight for a " + "single document. Use a script to combine multiple weights-per-doc into a single value."); } // There should always be one weight if advanceExact lands us here; either // a real weight or a `missing` weight assert docWeights.docValueCount() == 1; ```