@@ -262,7 +262,7 @@ private InternalAggregation[] buildAggregations(long[] owningBucketOrds) throws
262262 Supplier <B > emptyBucketBuilder = emptyBucketBuilder (owningBucketOrds [ordIdx ]);
263263
264264 // When request size is smaller than 20% of total buckets, use priority queue to get topN buckets
265- if ((size < 0.2 * bucketsInOrd ) || isKeyOrder ( order ) ) {
265+ if ((size < 0.2 * bucketsInOrd )) {
266266 PriorityQueue <B > ordered = buildPriorityQueue (size );
267267 while (ordsEnum .next ()) {
268268 long docCount = bucketDocCount (ordsEnum .ord ());
@@ -277,21 +277,11 @@ private InternalAggregation[] buildAggregations(long[] owningBucketOrds) throws
277277 spare = ordered .insertWithOverflow (spare );
278278 }
279279 // Get the top buckets
280- B [] bucketsForOrd = buildBuckets (ordered .size ());
281- topBucketsPerOrd [ordIdx ] = bucketsForOrd ;
282- if (isKeyOrder (order )) {
283- for (int b = ordered .size () - 1 ; b >= 0 ; --b ) {
284- topBucketsPerOrd [ordIdx ][b ] = ordered .pop ();
285- otherDocCounts [ordIdx ] -= topBucketsPerOrd [ordIdx ][b ].getDocCount ();
286- }
287- } else {
288- // sorted buckets not needed as they will be sorted by key in buildResult() which is different from
289- // order in priority queue ordered
290- Iterator <B > itr = ordered .iterator ();
291- for (int b = ordered .size () - 1 ; b >= 0 ; --b ) {
292- topBucketsPerOrd [ordIdx ][b ] = itr .next ();
293- otherDocCounts [ordIdx ] -= topBucketsPerOrd [ordIdx ][b ].getDocCount ();
294- }
280+ topBucketsPerOrd [ordIdx ] = buildBuckets (ordered .size ());;
281+ Iterator <B > itr = ordered .iterator ();
282+ for (int b = ordered .size () - 1 ; b >= 0 ; --b ) {
283+ topBucketsPerOrd [ordIdx ][b ] = itr .next ();
284+ otherDocCounts [ordIdx ] -= topBucketsPerOrd [ordIdx ][b ].getDocCount ();
295285 }
296286 } else {
297287 B [] bucketsForOrd = buildBuckets ((int ) bucketsInOrd );
@@ -511,10 +501,10 @@ LongTerms buildResult(long owningBucketOrd, long otherDocCount, LongTerms.Bucket
511501 final BucketOrder reduceOrder ;
512502 if (isKeyOrder (order ) == false ) {
513503 reduceOrder = InternalOrder .key (true );
514- Arrays .sort (topBuckets , reduceOrder .comparator ());
515504 } else {
516505 reduceOrder = order ;
517506 }
507+ Arrays .sort (topBuckets , reduceOrder .comparator ());
518508 return new LongTerms (
519509 name ,
520510 reduceOrder ,
@@ -591,10 +581,10 @@ DoubleTerms buildResult(long owningBucketOrd, long otherDocCount, DoubleTerms.Bu
591581 final BucketOrder reduceOrder ;
592582 if (isKeyOrder (order ) == false ) {
593583 reduceOrder = InternalOrder .key (true );
594- Arrays .sort (topBuckets , reduceOrder .comparator ());
595584 } else {
596585 reduceOrder = order ;
597586 }
587+ Arrays .sort (topBuckets , reduceOrder .comparator ());
598588 return new DoubleTerms (
599589 name ,
600590 reduceOrder ,
@@ -670,10 +660,10 @@ UnsignedLongTerms buildResult(long owningBucketOrd, long otherDocCount, Unsigned
670660 final BucketOrder reduceOrder ;
671661 if (isKeyOrder (order ) == false ) {
672662 reduceOrder = InternalOrder .key (true );
673- Arrays .sort (topBuckets , reduceOrder .comparator ());
674663 } else {
675664 reduceOrder = order ;
676665 }
666+ Arrays .sort (topBuckets , reduceOrder .comparator ());
677667 return new UnsignedLongTerms (
678668 name ,
679669 reduceOrder ,
0 commit comments