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 Summary
Modifier and TypeFieldDescriptionstatic LeafBucketCollector
A LeafBucketCollector that doesn't collect anything. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
collect(int doc)
abstract void
collect(int doc, long owningBucketOrd)
Collect the givendoc
in the bucket owned byowningBucketOrd
.boolean
isNoop()
Does this collector collect anything? If this returns true we can safely just never callcollect(int, long)
.void
setScorer(org.apache.lucene.search.Scorable scorer)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.lucene.search.LeafCollector
competitiveIterator
-
Field Details
-
NO_OP_COLLECTOR
A LeafBucketCollector that doesn't collect anything.Aggregator
s will return this if they've already collected their results and don't need to hook into the primary search. It is always safe to skip calling this callingsetScorer(org.apache.lucene.search.Scorable)
andcollect(int, long)
on this collector.
-
-
Constructor Details
-
LeafBucketCollector
public LeafBucketCollector()
-
-
Method Details
-
collect
Collect the givendoc
in the bucket owned byowningBucketOrd
.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:
Other aggregations don't know how many buckets will fall into any particular owning bucket. Thereturn rangeCount * owningBucketOrd + matchingRange(value);
terms
aggregation, for example, usesLongKeyedBucketOrds
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 callcollect(int, long)
. -
collect
- Specified by:
collect
in interfaceorg.apache.lucene.search.LeafCollector
- Throws:
IOException
-
setScorer
- Specified by:
setScorer
in interfaceorg.apache.lucene.search.LeafCollector
- Throws:
IOException
-