code: def reroute(self, body=None, params=None):
          
          return self.transport.perform_request('POST', '/_cluster/reroute',
              params=params, body=body)
docs: Explicitly execute a cluster reroute allocation command including specific commands.
          `<http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html>`_
  
          :arg body: The definition of `commands` to perform (`move`, `cancel`,
              `allocate`)
          :arg dry_run: Simulate the operation only and return the resulting state
          :arg explain: Return an explanation of why the commands can or cannot be
              executed
          :arg master_timeout: Explicit operation timeout for connection to master
              node
          :arg metric: Limit the information returned to the specified metrics.
              Defaults to all but metadata, valid choices are: '_all', 'blocks',
              'metadata', 'nodes', 'routing_table', 'master_node', 'version'
          :arg retry_failed: Retries allocation of shards that are blocked due to
              too many subsequent allocation failures
          :arg timeout: Explicit operation timeout