All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openmetadata.service.search.opensearch.aggregations.OpenAggregationsBuilder Maven / Gradle / Ivy

There is a newer version: 1.6.2
Show newest version
package org.openmetadata.service.search.opensearch.aggregations;

import java.util.List;
import org.openmetadata.service.search.SearchAggregationNode;

public class OpenAggregationsBuilder {
  public static List buildAggregation(
      SearchAggregationNode node,
      OpenAggregations aggregation,
      List aggregations) {
    String type = node.getType();
    if (type == "root") {
      for (SearchAggregationNode child : node.getChildren()) {
        buildAggregation(child, null, aggregations);
      }
      return aggregations;
    }
    OpenAggregations OpenAggregations = getAggregation(type);
    OpenAggregations.createAggregation(node);
    if (aggregation != null) {
      if (OpenAggregations.isPipelineAggregation()) {
        aggregation.setSubAggregation(OpenAggregations.getElasticPipelineAggregationBuilder());
      } else {
        aggregation.setSubAggregation(OpenAggregations.getElasticAggregationBuilder());
      }
    }
    if (aggregation == null) aggregations.add(OpenAggregations);
    for (SearchAggregationNode child : node.getChildren()) {
      buildAggregation(child, OpenAggregations, aggregations);
    }
    return aggregations;
  }

  public static OpenAggregations getAggregation(String aggregationType) {
    return switch (aggregationType) {
      case "bucket_selector" -> new OpenBucketSelectorAggregations();
      case "date_histogram" -> new OpenDateHistogramAggregations();
      case "terms" -> new OpenTermsAggregations();
      case "avg" -> new OpenAvgAggregations();
      case "min" -> new OpenMinAggregations();
      case "cardinality" -> new OpenCardinalityAggregations();
      case "nested" -> new OpenNestedAggregations();
      case "top_hits" -> new OpenTopHitsAggregations();
      default -> throw new IllegalArgumentException("Invalid aggregation type: " + aggregationType);
    };
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy