// Path: src/main/java/eu/luminis/elastic/search/response/HitsAggsResponse.java
// public class HitsAggsResponse<T> extends HitsResponse<T> {
// 
//     @JsonProperty
//     @JsonDeserialize(keyUsing = AggregationKeyDeserializer.class)
//     private Map<String, Aggregation> aggregations;
// 
//     public Map<String, Aggregation> getAggregations() {
//         return aggregations;
//     }
// 
//     public void setAggregations(Map<String, Aggregation> aggregations) {
//         this.aggregations = aggregations;
//     }
// }
// 
// Path: src/main/java/eu/luminis/elastic/search/response/HitsResponse.java
// public class HitsResponse<T> {
//     private List<T> hits;
//     private long totalHits;
//     private long responseTime;
//     private Boolean timedOut;
// 
//     public List<T> getHits() {
//         return hits;
//     }
// 
//     public void setHits(List<T> hits) {
//         this.hits = hits;
//     }
// 
//     public long getTotalHits() {
//         return totalHits;
//     }
// 
//     public void setTotalHits(long totalHits) {
//         this.totalHits = totalHits;
//     }
// 
//     public long getResponseTime() {
//         return responseTime;
//     }
// 
//     public void setResponseTime(long responseTime) {
//         this.responseTime = responseTime;
//     }
// 
//     public Boolean getTimedOut() {
//         return timedOut;
//     }
// 
//     public void setTimedOut(Boolean timedOut) {
//         this.timedOut = timedOut;
//     }
// }
// 
// Path: src/main/java/eu/luminis/elastic/SingleClusterRestClientFactoryBean.java
// public static final String DEFAULT_CLUSTER_NAME = "default-cluster";


import eu.luminis.elastic.search.response.HitsAggsResponse;
import eu.luminis.elastic.search.response.HitsResponse;
import static eu.luminis.elastic.SingleClusterRestClientFactoryBean.DEFAULT_CLUSTER_NAME;
package eu.luminis.elastic.search;



public class SingleClusterSearchService {
    private SearchService searchService;

    public SingleClusterSearchService(SearchService searchService) {
        this.searchService = searchService;
    }

// Path: src/main/java/eu/luminis/elastic/search/response/HitsAggsResponse.java
// public class HitsAggsResponse<T> extends HitsResponse<T> {
// 
//     @JsonProperty
//     @JsonDeserialize(keyUsing = AggregationKeyDeserializer.class)
//     private Map<String, Aggregation> aggregations;
// 
//     public Map<String, Aggregation> getAggregations() {
//         return aggregations;
//     }
// 
//     public void setAggregations(Map<String, Aggregation> aggregations) {
//         this.aggregations = aggregations;
//     }
// }
// 
// Path: src/main/java/eu/luminis/elastic/search/response/HitsResponse.java
// public class HitsResponse<T> {
//     private List<T> hits;
//     private long totalHits;
//     private long responseTime;
//     private Boolean timedOut;
// 
//     public List<T> getHits() {
//         return hits;
//     }
// 
//     public void setHits(List<T> hits) {
//         this.hits = hits;
//     }
// 
//     public long getTotalHits() {
//         return totalHits;
//     }
// 
//     public void setTotalHits(long totalHits) {
//         this.totalHits = totalHits;
//     }
// 
//     public long getResponseTime() {
//         return responseTime;
//     }
// 
//     public void setResponseTime(long responseTime) {
//         this.responseTime = responseTime;
//     }
// 
//     public Boolean getTimedOut() {
//         return timedOut;
//     }
// 
//     public void setTimedOut(Boolean timedOut) {
//         this.timedOut = timedOut;
//     }
// }
// 
// Path: src/main/java/eu/luminis/elastic/SingleClusterRestClientFactoryBean.java
// public static final String DEFAULT_CLUSTER_NAME = "default-cluster";


// Path: src/main/java/eu/luminis/elastic/search/SingleClusterSearchService.java
import eu.luminis.elastic.search.response.HitsAggsResponse;
import eu.luminis.elastic.search.response.HitsResponse;
import static eu.luminis.elastic.SingleClusterRestClientFactoryBean.DEFAULT_CLUSTER_NAME;

package eu.luminis.elastic.search;



public class SingleClusterSearchService {
    private SearchService searchService;

    public SingleClusterSearchService(SearchService searchService) {
        this.searchService = searchService;
    }

    public <T> HitsResponse<T> queryByTemplate(SearchByTemplateRequest request) {