索引分片存储 API

编辑

检索一个或多个索引中副本分片的存储信息。对于数据流,该 API 检索流的后备索引的存储信息。

resp = client.indices.shard_stores(
    index="my-index-000001",
)
print(resp)
response = client.indices.shard_stores(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.shardStores({
  index: "my-index-000001",
});
console.log(response);
GET /my-index-000001/_shard_stores

请求

编辑

GET /<目标>/_shard_stores

GET /_shard_stores

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,则您必须具有目标数据流、索引或别名的 monitormanage 索引权限

描述

编辑

索引分片存储 API 返回以下信息

  • 每个副本分片所在的节点
  • 每个副本分片的分配 ID
  • 每个副本分片的唯一 ID
  • 打开分片索引时或从较早的失败中遇到的任何错误

默认情况下,API 仅返回未分配或有一个或多个未分配副本分片的主分片的存储信息。

路径参数

编辑
<target>
(可选,字符串)用逗号分隔的数据流、索引和别名列表,用于限制请求。支持通配符(*)。要以所有数据流和索引为目标,请省略此参数或使用 *_all

查询参数

编辑
allow_no_indices

(可选,布尔值)如果为 false,则如果任何通配符表达式、索引别名_all 值仅以丢失或关闭的索引为目标,则请求会返回错误。即使请求以其他打开的索引为目标,此行为也适用。例如,如果索引以 foo 开头,但没有索引以 bar 开头,则以 foo*,bar* 为目标的请求会返回错误。

默认为 true

expand_wildcards

(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持用逗号分隔的值,例如 open,hidden。有效值包括

all
匹配任何数据流或索引,包括隐藏的数据流或索引。
open
匹配打开的、非隐藏的索引。还匹配任何非隐藏的数据流。
closed
匹配关闭的、非隐藏的索引。还匹配任何非隐藏的数据流。数据流无法关闭。
hidden
匹配隐藏的数据流和隐藏的索引。必须与 openclosed 或两者结合使用。
none
不接受通配符模式。

默认为 open

ignore_unavailable
(可选,布尔值)如果为 false,则如果请求以丢失或关闭的索引为目标,则会返回错误。默认为 false
status

(可选,字符串)用逗号分隔的分片运行状况状态列表,用于限制请求。

有效值包括

green
已分配主分片和所有副本分片。
yellow
一个或多个副本分片未分配。
red
主分片未分配。
all
返回所有分片,无论运行状况状态如何。

默认为 yellow,red

max_concurrent_shard_requests

(可选,整数)协调节点发送的最大并发分片级请求数。默认为 100。较大的值可能会使针对许多分片的请求更快地响应,但也可能对其他集群操作产生更大的影响。

示例

编辑

获取特定数据流或索引的分片存储信息

编辑
resp = client.indices.shard_stores(
    index="test",
)
print(resp)
response = client.indices.shard_stores(
  index: 'test'
)
puts response
const response = await client.indices.shardStores({
  index: "test",
});
console.log(response);
GET /test/_shard_stores

获取多个数据流和索引的分片存储信息

编辑
resp = client.indices.shard_stores(
    index="test1,test2",
)
print(resp)
response = client.indices.shard_stores(
  index: 'test1,test2'
)
puts response
const response = await client.indices.shardStores({
  index: "test1,test2",
});
console.log(response);
GET /test1,test2/_shard_stores

获取所有数据流和索引的分片存储信息

编辑
resp = client.indices.shard_stores()
print(resp)
response = client.indices.shard_stores
puts response
const response = await client.indices.shardStores();
console.log(response);
GET /_shard_stores

根据集群运行状况获取分片存储信息

编辑

您可以使用 status 查询参数来根据分片运行状况限制返回的信息。

以下请求仅返回已分配的主分片和副本分片的信息。

resp = client.indices.shard_stores(
    status="green",
)
print(resp)
response = client.indices.shard_stores(
  status: 'green'
)
puts response
const response = await client.indices.shardStores({
  status: "green",
});
console.log(response);
GET /_shard_stores?status=green

API 返回以下响应

{
   "indices": {
       "my-index-000001": {
           "shards": {
              "0": { 
                "stores": [ 
                    {
                        "sPa3OgxLSYGvQ4oPs-Tajw": { 
                            "name": "node_t0",
                            "ephemeral_id" : "9NlXRFGCT1m8tkvYCMK-8A",
                            "transport_address": "local[1]",
                            "external_id": "node_t0",
                            "attributes": {},
                            "roles": [...],
                            "version": "8.10.0",
                            "min_index_version": 7000099,
                            "max_index_version": 8100099
                        },
                        "allocation_id": "2iNySv_OQVePRX-yaRH_lQ", 
                        "allocation" : "primary|replica|unused" 
                        "store_exception": ... 
                    }
                ]
              }
           }
       }
   }
}

键是存储信息对应的分片 ID

分片所有副本的存储信息列表

托管存储副本的节点信息,键是唯一的节点 ID。

存储副本的分配 ID

存储副本的状态,它是用作主副本、副本还是根本未使用

打开分片索引时或从较早的引擎故障中遇到的任何异常