Class SumAggregator

All Implemented Interfaces:
Closeable, AutoCloseable,, org.elasticsearch.core.Releasable

public class SumAggregator extends NumericMetricsAggregator.SingleValue
  • Method Details

    • scoreMode

      public scoreMode()
      Description copied from class: AggregatorBase
      Most aggregators don't need scores, make sure to extend this method if your aggregator needs them.
      Specified by:
      scoreMode in interface
      scoreMode in class AggregatorBase
    • getLeafCollector

      public LeafBucketCollector getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx, LeafBucketCollector sub) throws IOException
      Description copied from class: AggregatorBase
      Collect results for this leaf.

      Most Aggregators will return a custom LeafBucketCollector that collects document information for every hit. Callers of this method will make sure to call collect for every hit. So any Aggregator that returns a customer LeafBucketCollector from this method runs at best O(hits) time. See the sum Aggregator for a fairly strait forward example of this.

      Some Aggregators are able to correctly collect results on their own, without being iterated by the top level query or the rest of the aggregations framework. These aggregations collect what they need by calling methods on LeafReaderContext and then they return LeafBucketCollector.NO_OP_COLLECTOR to signal that they've done their own collection. These aggregations can do better than O(hits). See the min Aggregator for an example of an aggregation that does this. It happens to run in constant time in some cases.

      In other cases MinAggregator can't get correct results by taking the constant time path so instead it returns a custom LeafBucketCollector. This is fairly common for aggregations that have these fast paths because most of these fast paths are only possible when the aggregation is at the root of the tree.

      Its also useful to look at the filters Aggregator chooses whether or not it can use the fast path before building the Aggregator rather than on each leaf. Either is fine.

      Specified by:
      getLeafCollector in class AggregatorBase
    • metric

      public double metric(long owningBucketOrd)
      Specified by:
      metric in class NumericMetricsAggregator.SingleValue
    • buildAggregation

      public InternalAggregation buildAggregation(long bucket)
      Description copied from class: MetricsAggregator
      Build an aggregation for data that has been collected into owningBucketOrd.
      Specified by:
      buildAggregation in class MetricsAggregator
    • buildEmptyAggregation

      public InternalAggregation buildEmptyAggregation()
      Description copied from class: Aggregator
      Build an empty aggregation.
      Specified by:
      buildEmptyAggregation in class Aggregator
    • doClose

      public void doClose()
      Description copied from class: AggregatorBase
      Release instance-specific data.
      doClose in class AggregatorBase