package alien4cloud.dao; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilder; import com.fasterxml.jackson.databind.ObjectMapper; import alien4cloud.dao.model.FacetedSearchResult; import java.util.function.Function; /** * Extract query results from an aggregation rather than from the query. */ public interface IAggregationQueryManager<T> { /** * Get the aggregation to be used for query. * * @return The aggregation to be used for query. */ AggregationBuilder getQueryAggregation(); /** * Parse the results of the query aggregation to create data array. * * @param objectMapper The json mapper to parse results out of elastic search * @param result The result in which to inject data. * @param aggregation The aggregation. * @return An array of results. */ void setData(ObjectMapper objectMapper, Function<String, Class> getClassFromType, FacetedSearchResult result, Aggregation aggregation); }