Class LeafBucketCollector

All Implemented Interfaces:
Direct Known Subclasses:
LeafBucketCollectorBase, ProfilingLeafBucketCollector

public abstract class LeafBucketCollector extends Object implements
Collects results for a particular segment. See the docs for collect(int, long) for how to do the collecting.
  • Field Details

  • Constructor Details

    • LeafBucketCollector

      public LeafBucketCollector()
  • Method Details

    • collect

      public abstract void collect(int doc, long owningBucketOrd) throws IOException
      Collect the given doc in the bucket owned by owningBucketOrd.

      The implementation of this method metric aggregations is generally something along the lines of

       array[owningBucketOrd] += loadValueFromDoc(doc)

      Bucket aggregations have more trouble because their job is to make new ordinals. So their implementation generally looks kind of like

       long myBucketOrd = mapOwningBucketAndValueToMyOrd(owningBucketOrd, loadValueFromDoc(doc));
       collectBucket(doc, myBucketOrd);

      Some bucket aggregations "know" how many ordinals each owning ordinal needs so they can map "densely". The range aggregation, for example, can perform this mapping with something like:

       return rangeCount * owningBucketOrd + matchingRange(value);
      Other aggregations don't know how many buckets will fall into any particular owning bucket. The terms aggregation, for example, uses LongKeyedBucketOrds which amounts to a hash lookup.
    • isNoop

      public boolean isNoop()
      Does this collector collect anything? If this returns true we can safely just never call collect(int, long).
    • collect

      public final void collect(int doc) throws IOException
      Specified by:
      collect in interface
    • setScorer

      public void setScorer( scorer) throws IOException
      Specified by:
      setScorer in interface