private ElasticsearchQuery doCreateEsQuery(
      final Query query, final SearchRequest searchRequest, final QueryBuilder queryWithFilters) {
    final StorageSettings settings = searchRequest.getSettings();

    final ElasticsearchQuery.Builder queryBuilder =
        ElasticsearchQuery.create()
            .index(settings.getStorageName().getName())
            .indexType(settings.getStorageType().getName())
            .query(queryWithFilters)
            .setAggregations(aggregationsBuilder.create(query.getAggregationQueries()))
            .sortBuilders(sortBuilder.create(query.getOrderBys()))
            .filter(filterBuilderFactory.create(query.getPostFilters()))
            .setReturnFields(searchRequest.getReturnFields())
            .searchType(SearchType.valueOf(searchRequest.getSearchType().toString()))
            .from(query.getFrom())
            .size(query.getSize());

    return queryBuilder.build();
  }