Class AggregatorBase
java.lang.Object
org.elasticsearch.search.aggregations.BucketCollector
org.elasticsearch.search.aggregations.Aggregator
org.elasticsearch.search.aggregations.AggregatorBase
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,org.apache.lucene.search.Collector,Releasable
- Direct Known Subclasses:
BucketsAggregator,MetricsAggregator,NonCollectingAggregator
public abstract class AggregatorBase extends Aggregator
Base implementation for concrete aggregators.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.elasticsearch.search.aggregations.Aggregator
Aggregator.BucketComparator, Aggregator.Parser, Aggregator.SubAggCollectionMode -
Field Summary
Fields Modifier and Type Field Description protected BucketCollectorcollectableSubAggregatorsstatic intDEFAULT_WEIGHTThe default "weight" that a bucket takes when performing an aggregationprotected java.lang.Stringnameprotected Aggregatorparentprotected Aggregator[]subAggregatorsFields inherited from class org.elasticsearch.search.aggregations.BucketCollector
NO_OP_COLLECTOR -
Constructor Summary
Constructors Modifier Constructor Description protectedAggregatorBase(java.lang.String name, AggregatorFactories factories, AggregationContext context, Aggregator parent, CardinalityUpperBound subAggregatorCardinality, java.util.Map<java.lang.String,java.lang.Object> metadata)Constructs a new Aggregator. -
Method Summary
Modifier and Type Method Description protected longaddRequestCircuitBreakerBytes(long bytes)Increment or decrement the number of bytes that have been allocated to service this request and potentially trigger aCircuitBreakingException.protected BigArraysbigArrays()Utilities for sharing large primitive arrays and tracking their usage.protected InternalAggregationsbuildEmptySubAggregations()voidclose()Called upon release of the aggregator.protected voiddoClose()Release instance-specific data.protected voiddoPostCollection()Can be overridden by aggregator implementation to be called back when the collection phase ends.protected voiddoPreCollection()Can be overridden by aggregator implementation to be called back when the collection phase starts.LeafBucketCollectorgetLeafCollector(org.apache.lucene.index.LeafReaderContext ctx)protected abstract LeafBucketCollectorgetLeafCollector(org.apache.lucene.index.LeafReaderContext ctx, LeafBucketCollector sub)Get aLeafBucketCollectorfor the given ctx, which should delegate to the given collector.java.util.Map<java.lang.String,java.lang.Object>metadata()java.lang.Stringname()Return the name of this aggregator.Aggregatorparent()Return the parent aggregator.java.util.function.Function<byte[],java.lang.Number>pointReaderIfAvailable(ValuesSourceConfig config)Returns a converter for point values if it's safe to use the indexed data instead of doc values.voidpostCollection()Called after collection of all document is done.voidpreCollection()Pre collection callback.protected voidpreGetSubLeafCollectors(org.apache.lucene.index.LeafReaderContext ctx)Can be overridden by aggregator implementations that like the perform an operation before the leaf collectors of children aggregators are instantiated for the next segment.org.apache.lucene.search.ScoreModescoreMode()Most aggregators don't need scores, make sure to extend this method if your aggregator needs them.protected org.apache.lucene.search.IndexSearchersearcher()The searcher for the shard this Aggregator is running against.AggregatorsubAggregator(java.lang.String aggName)Return the sub aggregator with the provided name.Aggregator[]subAggregators()Get the aggregators running under this one.protected org.apache.lucene.search.QuerytopLevelQuery()The "top level" query that will filter the results sent to this Aggregator.java.lang.StringtoString()Methods inherited from class org.elasticsearch.search.aggregations.Aggregator
bucketComparator, buildAggregations, buildEmptyAggregation, buildTopLevel, collectDebugInfo, resolveSortPath, resolveSortPathOnValidAggMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Field Details
-
DEFAULT_WEIGHT
public static final int DEFAULT_WEIGHTThe default "weight" that a bucket takes when performing an aggregation- See Also:
- Constant Field Values
-
name
protected final java.lang.String name -
parent
-
subAggregators
-
collectableSubAggregators
-
-
Constructor Details
-
AggregatorBase
protected AggregatorBase(java.lang.String name, AggregatorFactories factories, AggregationContext context, Aggregator parent, CardinalityUpperBound subAggregatorCardinality, java.util.Map<java.lang.String,java.lang.Object> metadata) throws java.io.IOExceptionConstructs a new Aggregator.- Parameters:
name- The name of the aggregationfactories- The factories for all the sub-aggregators under this aggregatorcontext- The aggregation contextparent- The parent aggregator (may benullfor top level aggregators)subAggregatorCardinality- Upper bound of the number of buckets that sub aggregations will collectmetadata- The metadata associated with this aggregator- Throws:
java.io.IOException
-
-
Method Details
-
pointReaderIfAvailable
public final java.util.function.Function<byte[],java.lang.Number> pointReaderIfAvailable(ValuesSourceConfig config)Returns a converter for point values if it's safe to use the indexed data instead of doc values. Generally, this means that the query has no filters or scripts, the aggregation is top level, and the underlying field is indexed, and the index is sorted in the right order. If those conditions aren't met, returnnullto indicate a point reader cannot be used in this case.- Parameters:
config- The config for the values source metric.
-
addRequestCircuitBreakerBytes
protected long addRequestCircuitBreakerBytes(long bytes)Increment or decrement the number of bytes that have been allocated to service this request and potentially trigger aCircuitBreakingException. The number of bytes allocated is automatically decremented with the circuit breaker service on closure of this aggregator. If memory has been returned, decrement it without tripping the breaker. For performance reasons subclasses should not call this millions of times each with small increments and instead batch up into larger allocations.- Parameters:
bytes- the number of bytes to register or negative to deregister the bytes- Returns:
- the cumulative size in bytes allocated by this aggregator to service this request
-
scoreMode
public org.apache.lucene.search.ScoreMode scoreMode()Most aggregators don't need scores, make sure to extend this method if your aggregator needs them. -
metadata
public java.util.Map<java.lang.String,java.lang.Object> metadata() -
getLeafCollector
protected abstract LeafBucketCollector getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx, LeafBucketCollector sub) throws java.io.IOExceptionGet aLeafBucketCollectorfor the given ctx, which should delegate to the given collector.- Throws:
java.io.IOException
-
getLeafCollector
public final LeafBucketCollector getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx) throws java.io.IOException- Specified by:
getLeafCollectorin interfaceorg.apache.lucene.search.Collector- Specified by:
getLeafCollectorin classBucketCollector- Throws:
java.io.IOException
-
preGetSubLeafCollectors
protected void preGetSubLeafCollectors(org.apache.lucene.index.LeafReaderContext ctx) throws java.io.IOExceptionCan be overridden by aggregator implementations that like the perform an operation before the leaf collectors of children aggregators are instantiated for the next segment.- Throws:
java.io.IOException
-
doPreCollection
protected void doPreCollection() throws java.io.IOExceptionCan be overridden by aggregator implementation to be called back when the collection phase starts.- Throws:
java.io.IOException
-
preCollection
public final void preCollection() throws java.io.IOExceptionDescription copied from class:BucketCollectorPre collection callback.- Specified by:
preCollectionin classBucketCollector- Throws:
java.io.IOException
-
name
public java.lang.String name()Description copied from class:AggregatorReturn the name of this aggregator.- Specified by:
namein classAggregator- Returns:
- The name of the aggregation.
-
parent
Description copied from class:AggregatorReturn the parent aggregator.- Specified by:
parentin classAggregator- Returns:
- The parent aggregator of this aggregator. The addAggregation are hierarchical in the sense that some can
be composed out of others (more specifically, bucket addAggregation can define other addAggregation that will
be aggregated per bucket). This method returns the direct parent aggregator that contains this aggregator, or
nullif there is none (meaning, this aggregator is a top level one)
-
subAggregators
Description copied from class:AggregatorGet the aggregators running under this one.- Specified by:
subAggregatorsin classAggregator
-
subAggregator
Description copied from class:AggregatorReturn the sub aggregator with the provided name.- Specified by:
subAggregatorin classAggregator
-
postCollection
public void postCollection() throws java.io.IOExceptionCalled after collection of all document is done.Warning: this is not final only to allow the parent join aggregator to delay this until building buckets.
- Specified by:
postCollectionin classBucketCollector- Throws:
java.io.IOException
-
close
public void close()Called upon release of the aggregator. -
doClose
protected void doClose()Release instance-specific data. -
doPostCollection
protected void doPostCollection() throws java.io.IOExceptionCan be overridden by aggregator implementation to be called back when the collection phase ends.- Throws:
java.io.IOException
-
buildEmptySubAggregations
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
bigArrays
Utilities for sharing large primitive arrays and tracking their usage. Used by all subclasses. -
topLevelQuery
protected final org.apache.lucene.search.Query topLevelQuery()The "top level" query that will filter the results sent to this Aggregator. Used by all Aggregators that perform extra collection phases in addition to the one done ingetLeafCollector(LeafReaderContext, LeafBucketCollector). -
searcher
protected final org.apache.lucene.search.IndexSearcher searcher()The searcher for the shard this Aggregator is running against. Used by all Aggregators that perform extra collection phases in addition to the one done ingetLeafCollector(LeafReaderContext, LeafBucketCollector)and by to look up extra "background" information about contents of the shard itself.
-