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 BucketCollector
collectableSubAggregators
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
-
Constructor Summary
Constructors Modifier Constructor Description protected
AggregatorBase(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 long
addRequestCircuitBreakerBytes(long bytes)
Increment or decrement the number of bytes that have been allocated to service this request and potentially trigger aCircuitBreakingException
.protected BigArrays
bigArrays()
Utilities for sharing large primitive arrays and tracking their usage.protected InternalAggregations
buildEmptySubAggregations()
void
close()
Called upon release of the aggregator.protected void
doClose()
Release instance-specific data.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.Aggregator
parent()
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.void
preCollection()
Pre collection callback.protected void
preGetSubLeafCollectors(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.ScoreMode
scoreMode()
Most aggregators don't need scores, make sure to extend this method if your aggregator needs them.protected org.apache.lucene.search.IndexSearcher
searcher()
The searcher for the shard this Aggregator is running against.Aggregator
subAggregator(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.Query
topLevelQuery()
The "top level" query that will filter the results sent to this Aggregator.java.lang.String
toString()
Methods inherited from class org.elasticsearch.search.aggregations.Aggregator
bucketComparator, buildAggregations, buildEmptyAggregation, buildTopLevel, collectDebugInfo, resolveSortPath, resolveSortPathOnValidAgg
-
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 benull
for 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, returnnull
to 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 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(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: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
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
Description copied from class:Aggregator
Get the aggregators running under this one.- Specified by:
subAggregators
in classAggregator
-
subAggregator
Description copied from class:Aggregator
Return the sub aggregator with the provided name.- Specified by:
subAggregator
in classAggregator
-
close
public void close()Called upon release of the aggregator. -
doClose
protected void doClose()Release instance-specific data. -
buildEmptySubAggregations
-
toString
public java.lang.String toString()- Overrides:
toString
in 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.
-