解析集群 API
编辑解析集群 API
编辑解析指定的索引表达式,返回有关每个集群的信息,包括本地集群(如果包含在内)。
此端点在执行跨集群搜索之前非常有用,可以确定哪些远程集群应包含在搜索中。
您在此端点使用的索引表达式与跨集群搜索使用的索引表达式相同。此端点也支持索引和集群排除。
对于索引表达式中的每个集群,将返回以下信息:
- 查询(“本地”)集群当前是否连接到索引表达式范围内的每个远程集群
- 每个远程集群是否配置了
skip_unavailable
为true
或false
- 该集群上是否有任何与索引表达式匹配的索引、别名或数据流
- 当您进行跨集群搜索时,搜索是否可能返回错误(包括如果您的用户没有查询索引的权限,则会出现任何授权错误)
- 集群版本信息,包括 Elasticsearch 服务器版本
resp = client.indices.resolve_cluster( name="my-index-*,cluster*:my-index-*", ) print(resp)
response = client.indices.resolve_cluster( name: 'my-index-*,cluster*:my-index-*' ) puts response
const response = await client.indices.resolveCluster({ name: "my-index-*,cluster*:my-index-*", }); console.log(response);
GET /_resolve/cluster/my-index-*,cluster*:my-index-*
这将返回有关本地集群和所有以别名cluster*
开头的远程配置集群的信息。每个集群将返回有关它是否具有任何与my-index-*
匹配的索引、别名或数据流的信息。
请求
编辑GET /_resolve/cluster/<index_expression>
路径参数
编辑查询参数
编辑-
expand_wildcards
-
(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以定位数据流,则此参数确定通配符表达式是否匹配隐藏数据流。支持逗号分隔的值,例如
open,hidden
。有效值为:-
all
- 匹配任何数据流或索引,包括隐藏的数据流或索引。
-
open
- 匹配打开的、非隐藏的索引。也匹配任何非隐藏的数据流。
-
closed
- 匹配关闭的、非隐藏的索引。也匹配任何非隐藏的数据流。数据流不能关闭。
-
hidden
- 匹配隐藏的数据流和隐藏的索引。必须与
open
、closed
或两者结合使用。 -
none
- 不接受通配符模式。
默认为
open
。 -
-
ignore_unavailable
-
(可选,布尔值)如果为
false
,则如果请求的目标是缺失或关闭的索引,则请求将返回错误。默认为false
。默认为
false
。 -
allow_no_indices
-
(可选,布尔值)如果为
false
,则如果任何通配符表达式、索引别名或_all
值仅定位缺失或关闭的索引,则请求将返回错误。即使请求定位其他打开的索引,此行为也适用。例如,如果索引以foo
开头,但没有索引以bar
开头,则定位foo*,bar*
的请求将返回错误。默认为
true
。 -
ignore_throttled
-
(可选,布尔值)如果为
true
,则在冻结时,将忽略具体的、扩展的或别名的索引。默认为false
。[7.16.0] 在 7.16.0 中已弃用。
在跨集群搜索之前使用此端点的优势
编辑在以下情况下,您可能希望从搜索中排除集群或索引:
- 远程集群当前未连接,并且配置了
skip_unavailable
=false
。在这些条件下执行跨集群搜索将导致整个搜索失败。 - 集群没有与索引表达式匹配的索引、别名或数据流(或者您的用户没有搜索它们的权限)。例如,假设您的索引表达式是
logs*,remote1:logs*
,并且remote1
集群没有与logs*
匹配的索引、别名或数据流。在这种情况下,如果您将其包含在跨集群搜索中,则该集群将不会返回任何结果。 - 索引表达式(与您指定的任何查询参数组合)可能会在您进行搜索时导致抛出异常。在这些情况下,
_resolve/cluster
响应中将出现“error”字段。(这也是显示安全/权限错误的地方。) - 远程集群是较旧的版本,不支持您想要在搜索中使用的功能。
示例
编辑resp = client.indices.resolve_cluster( name="my-index*,clust*:my-index*", ) print(resp)
response = client.indices.resolve_cluster( name: 'my-index*,clust*:my-index*' ) puts response
const response = await client.indices.resolveCluster({ name: "my-index*,clust*:my-index*", }); console.log(response);
GET /_resolve/cluster/my-index*,clust*:my-index*
API 返回以下响应
{ "(local)": { "connected": true, "skip_unavailable": false, "matching_indices": true, "version": { "number": "8.13.0", "build_flavor": "default", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" } }, "cluster_one": { "connected": true, "skip_unavailable": true, "matching_indices": true, "version": { "number": "8.13.0", "build_flavor": "default", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" } }, "cluster_two": { "connected": true, "skip_unavailable": false, "matching_indices": true, "version": { "number": "8.13.0", "build_flavor": "default", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" } } }
每个集群都有其自己的响应部分。您向其发送请求的集群标记为“(local)”。 |
|
查询集群尝试向每个远程集群发出请求。如果成功,则 |
|
在本地集群上配置的每个远程集群的 |
|
指示是否有任何索引、别名或数据流与为该集群指定的索引表达式匹配。 |
|
Elasticsearch 服务器版本。 |
识别跨集群搜索的潜在问题
编辑以下请求显示了如何通过修改查询来防止搜索失败的几个示例。
resp = client.indices.resolve_cluster( name="not-present,clust*:my-index*,oldcluster:*", ignore_unavailable=False, ) print(resp)
response = client.indices.resolve_cluster( name: 'not-present,clust*:my-index*,oldcluster:*', ignore_unavailable: false ) puts response
const response = await client.indices.resolveCluster({ name: "not-present,clust*:my-index*,oldcluster:*", ignore_unavailable: "false", }); console.log(response);
GET /_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailable=false
{ "(local)": { "connected": true, "skip_unavailable": false, "error": "no such index [not_present]" }, "cluster_one": { "connected": true, "skip_unavailable": true, "matching_indices": false, "version": { "number": "8.13.0", "build_flavor": "default", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" } }, "cluster_two": { "connected": false, "skip_unavailable": false, "matching_indices": true, "version": { "number": "8.13.0", "build_flavor": "default", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" } }, "oldcluster": { "connected": true, "skip_unavailable": false, "matching_indices": true } }
本地集群没有名为 |
|
|
|
|
|
|