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

版本: 7.9-7.15

简而言之,当 Elasticsearch 中 bucketOrds 的迭代顺序在没有发生任何变更的情况下发生变化时,就会出现此错误。这通常是由于代码中的错误或数据结构的意外变化导致的。要解决此问题,你可以尝试识别并修复导致迭代顺序变化的代码中的错误。或者,你可以检查数据结构是否存在任何意外变化并加以修正。如果错误仍然存在,考虑升级你的 Elasticsearch 版本,因为这可能是已知问题,在新版本中已得到修复。

日志上下文 #

日志"Iteration order of [" + bucketOrds + “] changed without mutating. [” class name is BucketsAggregator.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考:

for (int ordIdx = 0; ordIdx < owningBucketOrds.length; ordIdx++) {
    Listbuckets = new ArrayList<>(bucketsInOrd[ordIdx]);
    LongKeyedBucketOrds.BucketOrdsEnum ordsEnum = bucketOrds.ordsEnum(owningBucketOrds[ordIdx]);
    while(ordsEnum.next()) {
        if (bucketOrdsToCollect[b] != ordsEnum.ord()) {
            throw new AggregationExecutionException("Iteration order of [" + bucketOrds + "] changed without mutating. ["
            + ordsEnum.ord() + "] should have been [" + bucketOrdsToCollect[b] + "]");
        }
        buckets.add(bucketBuilder.build(ordsEnum.value(); bucketDocCount(ordsEnum.ord(); subAggregationResults[b++])));
    }
    results[ordIdx] = resultBuilder.build(owningBucketOrds[ordIdx]; buckets);
}