package alien4cloud.dao; import java.util.Map; import java.util.function.Consumer; import org.elasticsearch.index.query.FilterBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.mapping.FilterValuesStrategy; import org.elasticsearch.mapping.QueryBuilderAdapter; /** * Adapted version from elastic search mapping to add class management features. */ public interface IESQueryBuilderHelper<T> { /** * Perform a count request on the given indices. * * @return The count response. */ long count(); /** * Build a search query. * * @return an instance of search query builder helper */ IESSearchQueryBuilderHelper<T> prepareSearch(); /** * Execute the given consumer to alter the query builder. * * @param queryBuilderAdapter the query builder adapter to alter the query. * @return current builder instance. */ IESQueryBuilderHelper<T> alterQueryBuilder(QueryBuilderAdapter queryBuilderAdapter); /** * Set a script function to use for scoring * * @param functionScore The function to use for scoring. * @return current builder instance. */ IESQueryBuilderHelper<T> setScriptFunction(String functionScore); /** * Set filters from user provided filters. * * @param customFilter user provided filters. * @return current instance. */ IESQueryBuilderHelper<T> setFilters(FilterBuilder... customFilter); /** * Add filters to the current query. * * @param filters The filters to add the the query based on annotation defined filters (as a filtered query). * @param customFilters user provided filters to add (using and clause) to the annotation based filters. * @return current instance. */ IESQueryBuilderHelper<T> setFilters(Map<String, String[]> filters, FilterBuilder... customFilters); /** * Add filters to the current query. * * @param filters The filters to add the the query based on annotation defined filters (as a filtered query). * @param filterStrategies The filter strategies to apply to filters. * @param customFilters user provided filters to add (using and clause) to the annotation based filters. * @return current instance. */ IESQueryBuilderHelper<T> setFilters(Map<String, String[]> filters, Map<String, FilterValuesStrategy> filterStrategies, FilterBuilder... customFilters); }