Create a es_dsl aggregation object based on a term.

        :param field: field to be used to aggregate
        :return: a tuple with the aggregation id and es_dsl aggregation object. Ex:
                {
                    "terms": {
                        "field": <field>,
                        "size:": <size>,
                        "order":{
                            "_count":"desc"
                    }
                }
        Which will then be used as Search.aggs.bucket(agg_id, query_agg) method
        to add aggregations to the es_dsl Search object

def __get_query_agg_terms(cls, field, agg_id=None):
        """
        Create a es_dsl aggregation object based on a term.

        :param field: field to be used to aggregate
        :return: a tuple with the aggregation id and es_dsl aggregation object. Ex:
                {
                    "terms": {
                        "field": <field>,
                        "size:": <size>,
                        "order":{
                            "_count":"desc"
                    }
                }
        Which will then be used as Search.aggs.bucket(agg_id, query_agg) method
        to add aggregations to the es_dsl Search object
        """
        if not agg_id:
            agg_id = cls.AGGREGATION_ID
        query_agg = A("terms", field=field, size=cls.AGG_SIZE, order={"_count": "desc"})
        return (agg_id, query_agg)