code: def execute(self, ignore_cache=False):
          
          if ignore_cache or not hasattr(self, '_response'):
              es = connections.get_connection(self._using)
  
              self._response = self._response_class(
                  self,
                  es.search(
                      index=self._index,
                      body=self.to_dict(),
                      **self._params
                  )
              )
          return self._response
docs: Execute the search and return an instance of ``Response`` wrapping all
          the data.
  
          :arg ignore_cache: if set to ``True``, consecutive calls will hit
              ES, while cached result will be ignored. Defaults to `False`