org.elasticsearch.search.aggregations.bucket.global.GlobalAggregatorFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch Show documentation
Show all versions of elasticsearch Show documentation
Elasticsearch subproject :server
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.search.aggregations.bucket.global;
import org.elasticsearch.search.aggregations.AggregationExecutionException;
import org.elasticsearch.search.aggregations.Aggregator;
import org.elasticsearch.search.aggregations.AggregatorFactories;
import org.elasticsearch.search.aggregations.AggregatorFactory;
import org.elasticsearch.search.aggregations.CardinalityUpperBound;
import org.elasticsearch.search.aggregations.support.AggregationContext;
import java.io.IOException;
import java.util.Map;
public class GlobalAggregatorFactory extends AggregatorFactory {
public GlobalAggregatorFactory(
String name,
AggregationContext context,
AggregatorFactory parent,
AggregatorFactories.Builder subFactories,
Map metadata
) throws IOException {
super(name, context, parent, subFactories, metadata);
if (subFactories.isInSortOrderExecutionRequired()) {
throw new AggregationExecutionException("Time series aggregations cannot be used inside global aggregation.");
}
}
@Override
public Aggregator createInternal(Aggregator parent, CardinalityUpperBound cardinality, Map metadata)
throws IOException {
if (parent != null) {
throw new AggregationExecutionException(
"Aggregation ["
+ parent.name()
+ "] cannot have a global "
+ "sub-aggregation ["
+ name
+ "]. Global aggregations can only be defined as top level aggregations"
);
}
if (cardinality != CardinalityUpperBound.ONE) {
throw new AggregationExecutionException("Aggregation [" + name() + "] must have cardinality 1 but was [" + cardinality + "]");
}
return new GlobalAggregator(name, factories, context, metadata);
}
}