### 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
public void initialValidation(ReindexRequest request) {
        checkRemoteWhitelist(remoteWhitelist, request.getRemoteInfo());
        ClusterState state = clusterService.state();
        validateAgainstAliases(
            request.getSearchRequest(),
            request.getDestination(),
            request.getRemoteInfo(),
            resolver,
            autoCreateIndex,
            state
        );
        SearchSourceBuilder searchSource = request.getSearchRequest().source();
        if (searchSource != null && searchSource.sorts() != null && searchSource.sorts().isEmpty() == false) {
            deprecationLogger.warn(DeprecationCategory.API, "reindex_sort", SORT_DEPRECATED_MESSAGE);
        }
    }
    static void checkRemoteWhitelist(CharacterRunAutomaton whitelist, RemoteInfo remoteInfo) {
        if (remoteInfo == null) {
            return;
        }
        String check = remoteInfo.getHost() + ':' + remoteInfo.getPort();
        if (whitelist.run(check)) {
            return;
        }
        String whiteListKey = TransportReindexAction.REMOTE_CLUSTER_WHITELIST.getKey();
        throw new IllegalArgumentException('[' + check + "] not whitelisted in " + whiteListKey);
    }
    /**
     * Build the {@link CharacterRunAutomaton} that represents the reindex-from-remote whitelist and make sure that it doesn't whitelist
     * the world.