docs: def __get_query_basic(cls, date_field=None, start=None, end=None,
                            filters={}):
          """
          Create a es_dsl query object with the date range and filters.
  
          :param date_field: field with the date value
          :param start: date with the from value, should be a datetime.datetime object
          :param end: date with the to value, should be a datetime.datetime object
          :param filters: dict with the filters to be applied
          :return: a DSL query containing the required parameters
                   Ex: {'query': {'bool': {'filter': [{'range': {'DATE_FIELD':
                                                          {'gte': '2015-05-19T00:00:00',
                                                           'lte': '2018-05-18T00:00:00'}}}],
                      'must': [{'match_phrase': {'first_name': 'Jhon'}},
                               {'match_phrase': {'last_name': 'Doe'}},
                               {'match_phrase': {'Phone': 2222222}}
                               ]}}}
          """
          query_basic = Search()
  
          query_filters = cls.__get_query_filters(filters)
          for f in query_filters:
              query_basic = query_basic.query(f)
  
          query_filters_inverse = cls.__get_query_filters(filters, inverse=True)
          # Here, don't forget the '~'. That is what makes this an inverse filter.
          for f in query_filters_inverse:
              query_basic = query_basic.query(~f)
  
          if not date_field:
              query_range = {}
          else:
              query_range = cls.__get_query_range(date_field, start, end)
  
          # Applying the range filter
          query_basic = query_basic.filter('range', **query_range)
  
          return query_basic