private function createAggregation(Aggregation
$aggregation, string
$fieldName, EntityDefinition
$definition, Context
$context): AbstractAggregation
{ if ($this->keyValueStorage->
get(ElasticsearchIndexer::ENABLE_MULTILINGUAL_INDEX_KEY, false
)) { $field =
$this->
getField($definition,
$fieldName);
if ($field instanceof TranslatedField
) { $fieldName =
$this->
getTranslatedFieldName($fieldName,
$context->
getLanguageId());
} } return match (true
) { $aggregation instanceof StatsAggregation =>
$this->
parseStatsAggregation($aggregation,
$fieldName,
$context),
$aggregation instanceof AvgAggregation =>
new Metric\
AvgAggregation($aggregation->
getName(),
$fieldName),
$aggregation instanceof EntityAggregation =>
$this->
parseEntityAggregation($aggregation,
$fieldName),
$aggregation instanceof MaxAggregation =>
new Metric\
MaxAggregation($aggregation->
getName(),
$fieldName),
$aggregation instanceof MinAggregation =>
new Metric\
MinAggregation($aggregation->
getName(),
$fieldName),
$aggregation instanceof SumAggregation =>
new Metric\
SumAggregation($aggregation->
getName(),
$fieldName),
$aggregation instanceof CountAggregation =>
new ValueCountAggregation($aggregation->
getName(),
$fieldName),
$aggregation instanceof FilterAggregation =>
$this->
parseFilterAggregation($aggregation,
$definition,
$context),
$aggregation instanceof TermsAggregation =>
$this->
parseTermsAggregation($aggregation,
$fieldName,
$definition,
$context),
$aggregation instanceof DateHistogramAggregation =>
$this->
parseDateHistogramAggregation($aggregation,
$fieldName,
$definition,
$context),
$aggregation instanceof RangeAggregation =>
$this->
parseRangeAggregation($aggregation,
$fieldName),
default =>
throw new \
RuntimeException(sprintf('Provided aggregation of class %s not supported',
$aggregation::
class)),
};