code: def update(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.UPDATE)
          result = yield self._perform_request(HttpMethod.POST, path, body=body, params=query_params)
          returnValue(result)
docs: Update a document with the body param or list of ids
          `<http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html>`_
  
          :param index: the name of the index
          :param doc_type: the document type
          :param id: the id of the doc type
          :param body: the data to update in the index
          :arg consistency: Explicit write consistency setting for the operation,
              valid choices are: 'one', 'quorum', 'all'
          :arg fields: A comma-separated list of fields to return in the response
          :arg lang: The script language (default: groovy)
          :arg parent: ID of the parent document. Is is only used for routing and
              when for the upsert request
          :arg refresh: Refresh the index after performing the operation
          :arg retry_on_conflict: Specify how many times should the operation be
              retried when a conflict occurs (default: 0)
          :arg routing: Specific routing value
          :arg script: The URL-encoded script definition (instead of using request
              body)
          :arg script_id: The id of a stored script
          :arg scripted_upsert: True if the script referenced in script or
              script_id should be called to perform inserts - defaults to false
          :arg timeout: Explicit operation timeout
          :arg timestamp: Explicit timestamp for the document
          :arg ttl: Expiration time for the document
          :arg version: Explicit version number for concurrency control
          :arg version_type: Specific version type, valid choices are: 'internal',
              'force'