版本: 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.");
}
// There should always be one weight if advanceExact lands us here; either
// a real weight or a `missing` weight
assert docWeights.docValueCount() == 1;





