### Description

Given we have registered remotes and are able to cross cluster search/replicate I would like to be able to reindex a remote index on the local cluster.

The normal index from remote requires a host to be set. The proxy endpoint used for the remote doesn't work as that's over transport and index from remote uses the http/REST interface. Using the ES rest requires a user to be created with the correct permission, effectively not using the registered remote.

Doing a local index results in index not found:

```
# normal search works
POST remote1:example-index/_search

# results in index not found
POST _reindex
{
  "source": {
    "index": "remote1:example-index"
  },
  "dest": {
    "index": "my-new-example-index"
  }
}
```

```
{
  "error" : {
    "root_cause" : [
      {
        "type" : "index_not_found_exception",
        "reason" : "no such index [remote1:example-index]",
        "resource.type" : "index_or_alias",
        "resource.id" : "remote1:example-index",
        "index_uuid" : "_na_",
        "index" : "remote1:example-index"
      }
    ],
    "type" : "index_not_found_exception",
    "reason" : "no such index [remote1:example-index]",
    "resource.type" : "index_or_alias",
    "resource.id" : "remote1:example-index",
    "index_uuid" : "_na_",
    "index" : "remote1:example-index"
  },
  "status" : 404
}
```

modules/reindex/src/main/java/org/elasticsearch/reindex/ReindexValidator.java
ClusterState clusterState
    ) {
        if (remoteInfo != null) {
            return;
        }
        String target = destination.index();
        if (destination.isRequireAlias() && (false == clusterState.getMetadata().hasAlias(target))) {
            throw new IndexNotFoundException(
                "[" + DocWriteRequest.REQUIRE_ALIAS + "] request flag is [true] and [" + target + "] is not an alias",
                target
            );
        }
        if (false == autoCreateIndex.shouldAutoCreate(target, clusterState)) {
            /*
             * If we're going to autocreate the index we don't need to resolve
             * it. This is the same sort of dance that TransportIndexRequest
             * uses to decide to autocreate the index.
             */
            target = indexNameExpressionResolver.concreteWriteIndex(clusterState, destination).getName();
        }
        for (String sourceIndex : indexNameExpressionResolver.concreteIndexNames(clusterState, source)) {
            if (sourceIndex.equals(target)) {
                ActionRequestValidationException e = new ActionRequestValidationException();
                e.addValidationError("reindex cannot write into an index its reading from [" + target + ']');
                throw e;
            }
        }
    }
}