Class TermsAggregator

    • Method Detail

      • bucketComparator

        public java.util.Comparator<MultiBucketsAggregation.Bucket> bucketComparator​(AggregationPath path,
                                                                                     boolean asc)
        Internal Optimization for ordering InternalTerms.Buckets by a sub aggregation.

        in this phase, if the order is based on sub-aggregations, we need to use a different comparator to avoid constructing buckets for ordering purposes (we can potentially have a lot of buckets and building them will cause loads of redundant object constructions). The "special" comparators here will fetch the sub aggregation values directly from the sub aggregators bypassing bucket creation. Note that the comparator attached to the order will still be used in the reduce phase of the Aggregation.

        Parameters:
        path - determines which sub aggregation to use for ordering.
        asc - true for ascending order, false for descending.
        Returns:
        Comparator to order InternalTerms.Buckets in the desired order.
      • shouldDefer

        protected boolean shouldDefer​(Aggregator aggregator)
        Description copied from class: DeferableBucketAggregator
        This method should be overridden by subclasses that want to defer calculation of a child aggregation until a first pass is complete and a set of buckets has been pruned. Deferring collection will require the recording of all doc/bucketIds from the first pass and then the sub class should call DeferableBucketAggregator.runDeferredCollections(long...) for the selected set of buckets that survive the pruning.
        Overrides:
        shouldDefer in class DeferableBucketAggregator
        Parameters:
        aggregator - the child aggregator
        Returns:
        true if the aggregator should be deferred until a first pass at collection has completed