java.lang.Object
org.elasticsearch.transport.RemoteClusterAware
- Direct Known Subclasses:
RemoteClusterService
Base class for all services and components that need up-to-date information about the registered remote clusters
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
RemoteClusterAware
(Settings settings) Creates a newRemoteClusterAware
instance -
Method Summary
Modifier and TypeMethodDescriptionstatic String
buildRemoteIndexName
(String clusterAlias, String indexName) getEnabledRemoteClusters
(Settings settings) Returns remote clusters that are enabled in these settingsgroupClusterIndices
(Set<String> remoteClusterNames, String[] requestIndices) Groups indices per cluster by splitting remote cluster-alias, index-name pairs onREMOTE_CLUSTER_INDEX_SEPARATOR
.void
listenForUpdates
(ClusterSettings clusterSettings) Registers this instance to listen to updates on the cluster settings.protected abstract void
updateRemoteCluster
(String clusterAlias, Settings settings) Subclasses must implement this to receive information about updated cluster aliases.
-
Field Details
-
REMOTE_CLUSTER_INDEX_SEPARATOR
public static final char REMOTE_CLUSTER_INDEX_SEPARATOR- See Also:
-
LOCAL_CLUSTER_GROUP_KEY
- See Also:
-
settings
-
-
Constructor Details
-
RemoteClusterAware
Creates a newRemoteClusterAware
instance- Parameters:
settings
- the nodes level settings
-
-
Method Details
-
getEnabledRemoteClusters
Returns remote clusters that are enabled in these settings -
groupClusterIndices
protected Map<String,List<String>> groupClusterIndices(Set<String> remoteClusterNames, String[] requestIndices) Groups indices per cluster by splitting remote cluster-alias, index-name pairs onREMOTE_CLUSTER_INDEX_SEPARATOR
. All indices per cluster are collected as a list in the returned map keyed by the cluster alias. Local indices are grouped underLOCAL_CLUSTER_GROUP_KEY
. The returned map is mutable. This method supports excluding clusters by using the-cluster:*
index expression. For example, if requestIndices is [blogs, *:blogs, -remote1:*] and *:blogs resolves to "remote1:blogs, remote2:blogs" the map returned by the function will not have the remote1 entry. It will have only {"":blogs, remote2:blogs}. The index for the excluded cluster must be '*' to clarify that the entire cluster should be removed. A wildcard in the "-" excludes notation is also allowed. For example, suppose there are three remote clusters, remote1, remote2, remote3, and this index expression is provided: blogs,rem*:blogs,-rem*1:*. That would successfully remove remote1 from the list of clusters to be included.- Parameters:
remoteClusterNames
- the remote cluster names. If a clusterAlias is preceded by a minus sign that cluster will be excluded.requestIndices
- the indices in the search request to filter- Returns:
- a map of grouped remote and local indices
-
updateRemoteCluster
Subclasses must implement this to receive information about updated cluster aliases. -
listenForUpdates
Registers this instance to listen to updates on the cluster settings. -
buildRemoteIndexName
-