解析集群 API
编辑解析集群 API编辑
解析指定的索引表达式,以返回有关每个集群的信息,如果包含本地集群,则也包括在内。
此端点在执行 跨集群搜索 之前非常有用,因为它可以确定哪些远程集群应包含在搜索中。
您可以在此端点中使用与跨集群搜索相同的索引表达式。此端点也支持索引和 集群排除。
对于索引表达式中的每个集群,将返回以下信息:
- 查询(“本地”)集群当前是否连接到索引表达式范围内的每个远程集群
- 每个远程集群是否将
skip_unavailable
配置为true
或false
- 该集群上是否有任何与索引表达式匹配的索引、别名或数据流
- 当您执行跨集群搜索时,搜索是否可能会返回错误(包括如果您的用户没有查询索引的权限时出现的任何授权错误)
- 集群版本信息,包括 Elasticsearch 服务器版本
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”字段将出现。(这也是显示安全/权限错误的地方。) - 远程集群是较旧的版本,不支持您要在搜索中使用的功能。
示例编辑
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" } } }
每个集群都有自己的响应部分。您向其发送请求的集群标记为“(本地)”。 |
|
查询集群尝试向每个远程集群发出请求。如果成功,则 |
|
每个远程集群的 |
|
指示是否有任何索引、别名或数据流与为该集群指定的索引表达式匹配。 |
|
Elasticsearch 服务器版本。 |
识别跨集群搜索中的潜在问题编辑
以下请求显示了修改查询以防止搜索失败的几个示例。
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 } }
本地集群没有名为 |
|
|
|
|
|
|