Loops though the self.aggregations dict and adds them to the Search object
        in order in which they were created. Queries elasticsearch and returns a dict
        containing the results

        :returns: a dictionary containing the response from elasticsearch

def fetch_aggregation_results(self):
        """
        Loops though the self.aggregations dict and adds them to the Search object
        in order in which they were created. Queries elasticsearch and returns a dict
        containing the results

        :returns: a dictionary containing the response from elasticsearch
        """

        self.reset_aggregations()

        for key, val in self.aggregations.items():
            self.search.aggs.bucket(self.parent_agg_counter, val)
            self.parent_agg_counter += 1

        self.search = self.search.extra(size=0)
        response = self.search.execute()
        self.flush_aggregations()
        return response.to_dict()