@@ -464,33 +464,36 @@ For backward compatibility, we disable the merge sort and use ({@link InternalTe
464
464
}
465
465
final int size = Math .min (localBucketCountThresholds .getRequiredSize (), reducedBuckets .size ());
466
466
final Comparator <MultiBucketsAggregation .Bucket > cmp = order .comparator ();
467
- if (size < reducedBuckets .size ()) {
468
- ArrayUtil .select (reducedBucketsArr , 0 , reducedBuckets .size (), size , cmp );
469
- }
470
- int selectedSize = 0 ;
467
+
471
468
for (B bucket : reducedBucketsArr ) {
472
469
if (sumDocCountError == -1 ) {
473
470
bucket .setDocCountError (-1 );
474
471
} else {
475
472
final long finalSumDocCountError = sumDocCountError ;
476
473
bucket .setDocCountError (docCountError -> docCountError + finalSumDocCountError );
477
474
}
478
- if (bucket .getDocCount () >= localBucketCountThresholds .getMinDocCount ()) {
479
- B removed = ((selectedSize == size ) ? bucket : null );
480
- if (removed != null ) {
481
- otherDocCount += removed .getDocCount ();
482
- reduceContext .consumeBucketsAndMaybeBreak (-countInnerBucket (removed ));
483
- } else {
484
- selectedSize ++;
485
- reduceContext .consumeBucketsAndMaybeBreak (1 );
486
- }
487
- } else {
475
+
476
+ if (bucket .getDocCount () < localBucketCountThresholds .getMinDocCount ()) {
488
477
reduceContext .consumeBucketsAndMaybeBreak (-countInnerBucket (bucket ));
489
478
}
490
479
}
480
+ if (size < reducedBuckets .size ()) {
481
+ ArrayUtil .select (reducedBucketsArr , 0 , reducedBuckets .size (), size , cmp );
482
+ }
483
+
484
+ int selectedSize = 0 ;
485
+ for (B bucket : reducedBucketsArr ) {
486
+ B removed = ((selectedSize == size ) ? bucket : null );
487
+ if (removed != null ) {
488
+ otherDocCount += removed .getDocCount ();
489
+ reduceContext .consumeBucketsAndMaybeBreak (-countInnerBucket (removed ));
490
+ } else {
491
+ selectedSize ++;
492
+ reduceContext .consumeBucketsAndMaybeBreak (1 );
493
+ }
494
+ }
491
495
if (selectedSize != size ) {
492
496
list = createBucketsArray (selectedSize );
493
- System .arraycopy (reducedBucketsArr , 0 , list , 0 , selectedSize );
494
497
} else {
495
498
list = reducedBucketsArr ;
496
499
}
0 commit comments