code: def explain(self, index, doc_type, id, body=None, **query_params):
          
          self._es_parser.is_not_empty_params(index, doc_type, id)
  
          path = self._es_parser.make_path(index,
                                           doc_type,
                                           id,
                                           EsMethods.EXPLAIN)
  
          result = yield self._perform_request(HttpMethod.GET,
                                               path,
                                               body,
                                               params=query_params)
          returnValue(result)
docs: The explain api computes a score explanation for a query and a specific
          document. This can give useful feedback whether a document matches or
          didn't match a specific query.
          `<http://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html>`_
          :param index: The name of the index
          :param doc_type: The type of the document
          :param id: The document ID
          :param body: The query definition using the Query DSL
          :arg _source: True or false to return the _source field or not, or a
              list of fields to return
          :arg _source_exclude: A list of fields to exclude from the returned
              _source field
          :arg _source_include: A list of fields to extract and return from the
              _source field
          :arg analyze_wildcard: Specify whether wildcards and prefix queries in
              the query string query should be analyzed (default: false)
          :arg analyzer: The analyzer for the query string query
          :arg default_operator: The default operator for query string query (AND
              or OR), default 'OR', valid choices are: 'AND', 'OR'
          :arg df: The default field for query string query (default: _all)
          :arg fields: A comma-separated list of fields to return in the response
          :arg lenient: Specify whether format-based query failures (such as
              providing text to a numeric field) should be ignored
          :arg lowercase_expanded_terms: Specify whether query terms should be
              lowercased
          :arg parent: The ID of the parent document
          :arg preference: Specify the node or shard the operation should be
              performed on (default: random)
          :arg q: Query in the Lucene query string syntax
          :arg routing: Specific routing value