Class LeafBucketCollector

java.lang.Object
org.elasticsearch.search.aggregations.LeafBucketCollector
All Implemented Interfaces:
org.apache.lucene.search.LeafCollector
Direct Known Subclasses:
LeafBucketCollectorBase, ProfilingLeafBucketCollector

public abstract class LeafBucketCollector extends Object implements org.apache.lucene.search.LeafCollector
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.
      Throws:
      IOException
    • 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 org.apache.lucene.search.LeafCollector
      Throws:
      IOException
    • setScorer

      public void setScorer(org.apache.lucene.search.Scorable scorer) throws IOException
      Specified by:
      setScorer in interface org.apache.lucene.search.LeafCollector
      Throws:
      IOException