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.Parser, Aggregator.SubAggCollectionMode
-
-
Field Summary
Fields Modifier and Type Field Description protected BucketCollector
collectableSubAggregators
protected SearchContext
context
static int
DEFAULT_WEIGHT
The default "weight" that a bucket takes when performing an aggregationprotected java.lang.String
name
protected Aggregator
parent
protected Aggregator[]
subAggregators
-
Fields inherited from class org.elasticsearch.search.aggregations.BucketCollector
NO_OP_COLLECTOR
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AggregatorBase(java.lang.String name, AggregatorFactories factories, SearchContext context, Aggregator parent, java.util.List<PipelineAggregator> pipelineAggregators, java.util.Map<java.lang.String,java.lang.Object> metaData)
Constructs a new Aggregator.
-
Method Summary
Modifier and Type Method Description protected long
addRequestCircuitBreakerBytes(long bytes)
Increment or decrement the number of bytes that have been allocated to service this request and potentially trigger aCircuitBreakingException
.protected InternalAggregations
buildEmptySubAggregations()
void
close()
Called upon release of the aggregator.SearchContext
context()
Return theSearchContext
attached with thisAggregator
.protected void
doClose()
Release instance-specific data.protected void
doPostCollection()
Can be overridden by aggregator implementation to be called back when the collection phase ends.protected void
doPreCollection()
Can be overridden by aggregator implementation to be called back when the collection phase starts.LeafBucketCollector
getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx)
protected abstract LeafBucketCollector
getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx, LeafBucketCollector sub)
Get aLeafBucketCollector
for the given ctx, which should delegate to the given collector.java.util.Map<java.lang.String,java.lang.Object>
metaData()
java.lang.String
name()
Return the name of this aggregator.boolean
needsScores()
Most aggregators don't need scores, make sure to extend this method if your aggregator needs them.Aggregator
parent()
Return the parent aggregator.java.util.List<PipelineAggregator>
pipelineAggregators()
void
postCollection()
Called after collection of all document is done.void
preCollection()
Pre collection callback.protected void
preGetSubLeafCollectors()
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.Aggregator
subAggregator(java.lang.String aggName)
Return the sub aggregator with the provided name.Aggregator[]
subAggregators()
java.lang.String
toString()
-
Methods inherited from class org.elasticsearch.search.aggregations.Aggregator
buildAggregation, buildEmptyAggregation, descendsFromBucketAggregator
-
-
-
-
Field Detail
-
DEFAULT_WEIGHT
public static final int DEFAULT_WEIGHT
The default "weight" that a bucket takes when performing an aggregation- See Also:
- Constant Field Values
-
name
protected final java.lang.String name
-
parent
protected final Aggregator parent
-
context
protected final SearchContext context
-
subAggregators
protected final Aggregator[] subAggregators
-
collectableSubAggregators
protected BucketCollector collectableSubAggregators
-
-
Constructor Detail
-
AggregatorBase
protected AggregatorBase(java.lang.String name, AggregatorFactories factories, SearchContext context, Aggregator parent, java.util.List<PipelineAggregator> pipelineAggregators, java.util.Map<java.lang.String,java.lang.Object> metaData) throws java.io.IOException
Constructs 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 benull
for top level aggregators)metaData
- The metaData associated with this aggregator- Throws:
java.io.IOException
-
-
Method Detail
-
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
-
needsScores
public boolean needsScores()
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()
-
pipelineAggregators
public java.util.List<PipelineAggregator> pipelineAggregators()
-
getLeafCollector
protected abstract LeafBucketCollector getLeafCollector(org.apache.lucene.index.LeafReaderContext ctx, LeafBucketCollector sub) throws java.io.IOException
Get aLeafBucketCollector
for 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:
getLeafCollector
in interfaceorg.apache.lucene.search.Collector
- Specified by:
getLeafCollector
in classBucketCollector
- Throws:
java.io.IOException
-
preGetSubLeafCollectors
protected void preGetSubLeafCollectors() throws java.io.IOException
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.- Throws:
java.io.IOException
-
doPreCollection
protected void doPreCollection() throws java.io.IOException
Can 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.IOException
Description copied from class:BucketCollector
Pre collection callback.- Specified by:
preCollection
in classBucketCollector
- Throws:
java.io.IOException
-
name
public java.lang.String name()
Description copied from class:Aggregator
Return the name of this aggregator.- Specified by:
name
in classAggregator
- Returns:
- The name of the aggregation.
-
parent
public Aggregator parent()
Description copied from class:Aggregator
Return the parent aggregator.- Specified by:
parent
in 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
null
if there is none (meaning, this aggregator is a top level one)
-
subAggregators
public Aggregator[] subAggregators()
-
subAggregator
public Aggregator subAggregator(java.lang.String aggName)
Description copied from class:Aggregator
Return the sub aggregator with the provided name.- Specified by:
subAggregator
in classAggregator
-
context
public SearchContext context()
Description copied from class:Aggregator
Return theSearchContext
attached with thisAggregator
.- Specified by:
context
in classAggregator
- Returns:
- The current aggregation context.
-
postCollection
public final void postCollection() throws java.io.IOException
Called after collection of all document is done.- Specified by:
postCollection
in 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.IOException
Can be overridden by aggregator implementation to be called back when the collection phase ends.- Throws:
java.io.IOException
-
buildEmptySubAggregations
protected final InternalAggregations buildEmptySubAggregations()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-