Class ProfilingLeafBucketCollector

java.lang.Object
org.elasticsearch.search.aggregations.LeafBucketCollector
org.elasticsearch.search.profile.aggregation.ProfilingLeafBucketCollector
All Implemented Interfaces:
org.apache.lucene.search.LeafCollector

public class ProfilingLeafBucketCollector extends LeafBucketCollector
  • Constructor Details

  • Method Details

    • collect

      public void collect(int doc, long bucket) throws IOException
      Description copied from class: LeafBucketCollector
      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.
      Specified by:
      collect in class LeafBucketCollector
      Throws:
      IOException
    • setScorer

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

      public boolean isNoop()
      Description copied from class: LeafBucketCollector
      Does this collector collect anything? If this returns true we can safely just never call LeafBucketCollector.collect(int, long).
      Overrides:
      isNoop in class LeafBucketCollector