Skip to content

Commit e9b877e

Browse files
authored
Clarify the behavior of remote/info and resolve/cluster for connected status of remotes (#118993)
1 parent 4b4c59d commit e9b877e

File tree

2 files changed

+35
-38
lines changed

2 files changed

+35
-38
lines changed

docs/reference/cluster/remote-info.asciidoc

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,18 @@ Returns configured remote cluster information.
2626
[[cluster-remote-info-api-desc]]
2727
==== {api-description-title}
2828

29-
The cluster remote info API allows you to retrieve all of the configured
30-
remote cluster information. It returns connection and endpoint information keyed
29+
The cluster remote info API allows you to retrieve information about configured
30+
remote clusters. It returns connection and endpoint information keyed
3131
by the configured remote cluster alias.
3232

33+
TIP: This API returns information that reflects current state on the local cluster.
34+
The `connected` field does not necessarily reflect whether a remote cluster is
35+
down or unavailable, only whether there is currently an open connection to it.
36+
Elasticsearch does not spontaneously try to reconnect to a disconnected remote
37+
cluster. To trigger a reconnection, attempt a <<modules-cross-cluster-search,{ccs}>>,
38+
<<esql-cross-clusters,{esql} {ccs}>>, or try the
39+
<<indices-resolve-cluster-api,resolve cluster>> endpoint.
40+
3341

3442
[[cluster-remote-info-api-response-body]]
3543
==== {api-response-body-title}
@@ -39,7 +47,10 @@ by the configured remote cluster alias.
3947
`proxy`.
4048

4149
`connected`::
42-
True if there is at least one connection to the remote cluster.
50+
True if there is at least one open connection to the remote cluster. When
51+
false, it means that the cluster no longer has an open connection to the
52+
remote cluster. It does not necessarily mean that the remote cluster is
53+
down or unavailable, just that at some point a connection was lost.
4354

4455
`initial_connect_timeout`::
4556
The initial connect timeout for remote cluster connections.

docs/reference/indices/resolve-cluster.asciidoc

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ For the most up-to-date API details, refer to {api-es}/group/endpoint-indices[In
1111
--
1212

1313
Resolves the specified index expressions to return information about
14-
each cluster, including the local "querying" cluster, if included. If no index expression
15-
is provided, this endpoint will return information about all the remote
16-
clusters that are configured on the querying cluster.
14+
each cluster, including the local "querying" cluster, if included.
1715

1816
This endpoint is useful before doing a <<modules-cross-cluster-search,{ccs}>> in
1917
order to determine which remote clusters should be included in a search.
@@ -24,10 +22,12 @@ with this endpoint.
2422

2523
For each cluster in scope, information is returned about:
2624

27-
1. whether the querying ("local") cluster is currently connected to it
25+
1. whether the querying ("local") cluster was able to connect to each remote cluster
26+
specified in the index expression. Note that this endpoint actively attempts to
27+
contact the remote clusters, unlike the <<cluster-remote-info,remote/info>> endpoint.
2828
2. whether each remote cluster is configured with `skip_unavailable` as `true` or `false`
2929
3. whether there are any indices, aliases or data streams on that cluster that match
30-
the index expression (if one provided)
30+
the index expression
3131
4. whether the search is likely to have errors returned when you do a {ccs} (including any
3232
authorization errors if your user does not have permission to query a remote cluster or
3333
the indices on that cluster)
@@ -42,12 +42,6 @@ Once the proper security permissions are obtained, then you can rely on the `con
4242
in the response to determine whether the remote cluster is available and ready for querying.
4343
====
4444

45-
NOTE: When querying older clusters that do not support the _resolve/cluster endpoint
46-
without an index expression, the local cluster will send the index expression `dummy*`
47-
to those remote clusters, so if an errors occur, you may see a reference to that index
48-
expression even though you didn't request it. If it causes a problem, you can instead
49-
include an index expression like `*:*` to this endpoint to bypass the issue.
50-
5145
////
5246
[source,console]
5347
--------------------------------
@@ -77,14 +71,6 @@ PUT _cluster/settings
7771
// TEST[s/35.238.149.\d+:930\d+/\${transport_host}/]
7872
////
7973

80-
[source,console]
81-
----
82-
GET /_resolve/cluster
83-
----
84-
// TEST[continued]
85-
86-
Returns information about all remote clusters configured on the local cluster.
87-
8874
[source,console]
8975
----
9076
GET /_resolve/cluster/my-index-*,cluster*:my-index-*
@@ -140,21 +126,28 @@ ignored when frozen. Defaults to `false`.
140126
+
141127
deprecated:[7.16.0]
142128

143-
[TIP]
144-
====
145-
The index options above are only allowed when specifying an index expression.
146-
You will get an error if you specify index options to the _resolve/cluster API
147-
that takes no index expression.
148-
====
149-
150129

151130
[discrete]
152131
[[usecases-for-resolve-cluster]]
132+
=== Test availability of remote clusters
133+
134+
The <<cluster-remote-info,remote/info>> endpoint is commonly used to test whether the "local"
135+
cluster (the cluster being queried) is connected to its remote clusters, but it does not
136+
necessarily reflect whether the remote cluster is available or not. The remote cluster may
137+
be available, while the local cluster is not currently connected to it.
138+
139+
You can use the resolve-cluster API to attempt to reconnect to remote clusters
140+
(for example with `GET _resolve/cluster/*:*`) and
141+
the `connected` field in the response will indicate whether it was successful or not.
142+
If a connection was (re-)established, this will also cause the
143+
<<cluster-remote-info,remote/info>> endpoint to now indicate a connected status.
144+
145+
153146
=== Advantages of using this endpoint before a {ccs}
154147

155148
You may want to exclude a cluster or index from a search when:
156149

157-
1. A remote cluster is not currently connected and is configured with `skip_unavailable`=`false`.
150+
1. A remote cluster could not be connected to and is configured with `skip_unavailable`=`false`.
158151
Executing a {ccs} under those conditions will cause
159152
<<cross-cluster-search-failures,the entire search to fail>>.
160153

@@ -268,14 +261,7 @@ GET /_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailab
268261
},
269262
"cluster_two": {
270263
"connected": false, <3>
271-
"skip_unavailable": false,
272-
"matching_indices": true,
273-
"version": {
274-
"number": "8.13.0",
275-
"build_flavor": "default",
276-
"minimum_wire_compatibility_version": "7.17.0",
277-
"minimum_index_compatibility_version": "7.0.0"
278-
}
264+
"skip_unavailable": false
279265
},
280266
"oldcluster": { <4>
281267
"connected": true,

0 commit comments

Comments
 (0)