Class NonCollectingMultiMetricAggregator
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Releasable
NumericMetricsAggregator.SingleValue
that is not collected, this can typically be used when running
an aggregation over a field that doesn't have a mapping.
see NonCollectingAggregator
-
Nested Class Summary
Nested classes/interfaces inherited from class org.elasticsearch.search.aggregations.metrics.NumericMetricsAggregator
NumericMetricsAggregator.MultiValue, NumericMetricsAggregator.SingleValue
Nested classes/interfaces inherited from class org.elasticsearch.search.aggregations.Aggregator
Aggregator.BucketComparator, Aggregator.Parser, Aggregator.SubAggCollectionMode
Nested classes/interfaces inherited from class org.elasticsearch.search.aggregations.BucketCollector
BucketCollector.BucketCollectorWrapper
-
Field Summary
Fields inherited from class org.elasticsearch.search.aggregations.AggregatorBase
collectableSubAggregators, DEFAULT_WEIGHT, name, parent, subAggregators
Fields inherited from class org.elasticsearch.search.aggregations.BucketCollector
NO_OP_BUCKET_COLLECTOR, NO_OP_COLLECTOR
-
Constructor Summary
ConstructorDescriptionNonCollectingMultiMetricAggregator
(String name, AggregationContext context, Aggregator parent, InternalNumericMetricsAggregation.MultiValue emptyAggregation, Predicate<String> hasMetric, Map<String, Object> metadata) Build a NonCollectingMultiMetricAggregator forNumericMetricsAggregator.SingleValue
aggregators. -
Method Summary
Modifier and TypeMethodDescriptionbuildAggregation
(long owningBucketOrd) Build an aggregation for data that has been collected intoowningBucketOrd
.Build an empty aggregation.Collect results for this leaf.boolean
double
Methods inherited from class org.elasticsearch.search.aggregations.metrics.NumericMetricsAggregator.MultiValue
bucketComparator
Methods inherited from class org.elasticsearch.search.aggregations.metrics.MetricsAggregator
buildAggregations
Methods inherited from class org.elasticsearch.search.aggregations.AggregatorBase
addRequestCircuitBreakerBytes, bigArrays, buildEmptySubAggregations, close, doClose, doPostCollection, doPreCollection, getLeafCollector, metadata, name, parent, pointReaderIfAvailable, postCollection, preCollection, preGetSubLeafCollectors, releaseAggregations, scoreMode, searcher, subAggregator, subAggregators, topLevelQuery, toString
Methods inherited from class org.elasticsearch.search.aggregations.Aggregator
buildTopLevel, collectDebugInfo, resolveSortPath, resolveSortPathOnValidAgg
Methods inherited from class org.elasticsearch.search.aggregations.BucketCollector
asCollector
-
Constructor Details
-
NonCollectingMultiMetricAggregator
public NonCollectingMultiMetricAggregator(String name, AggregationContext context, Aggregator parent, InternalNumericMetricsAggregation.MultiValue emptyAggregation, Predicate<String> hasMetric, Map<String, Object> metadata) throws IOExceptionBuild a NonCollectingMultiMetricAggregator forNumericMetricsAggregator.SingleValue
aggregators.- Throws:
IOException
-
-
Method Details
-
getLeafCollector
public LeafBucketCollector getLeafCollector(AggregationExecutionContext aggCtx, LeafBucketCollector sub) Description copied from class:AggregatorBase
Collect results for this leaf.Most Aggregators will return a custom
LeafBucketCollector
that collects document information for every hit. Callers of this method will make sure to callcollect
for every hit. So anyAggregator
that returns a customer LeafBucketCollector from this method runs at bestO(hits)
time. See thesum
Aggregator for a fairly strait forward example of this.Some Aggregators are able to correctly collect results on their own, without being iterated by the top level query or the rest of the aggregations framework. These aggregations collect what they need by calling methods on
LeafReaderContext
and then they returnLeafBucketCollector.NO_OP_COLLECTOR
to signal that they've done their own collection. These aggregations can do better thanO(hits)
. See themin
Aggregator for an example of an aggregation that does this. It happens to run in constant time in some cases.In other cases
MinAggregator
can't get correct results by taking the constant time path so instead it returns a customLeafBucketCollector
. This is fairly common for aggregations that have these fast paths because most of these fast paths are only possible when the aggregation is at the root of the tree.Its also useful to look at the
filters
Aggregator chooses whether or not it can use the fast path before building the Aggregator rather than on each leaf. Either is fine.- Specified by:
getLeafCollector
in classAggregatorBase
-
buildAggregation
Description copied from class:MetricsAggregator
Build an aggregation for data that has been collected intoowningBucketOrd
.- Specified by:
buildAggregation
in classMetricsAggregator
- Throws:
IOException
-
buildEmptyAggregation
Description copied from class:Aggregator
Build an empty aggregation.- Specified by:
buildEmptyAggregation
in classAggregator
-
hasMetric
- Specified by:
hasMetric
in classNumericMetricsAggregator.MultiValue
-
metric
- Specified by:
metric
in classNumericMetricsAggregator.MultiValue
-