cat 分片 API编辑

cat API 仅供使用命令行或 Kibana 控制台的人类使用。它们适用于应用程序。

The shards 命令是关于哪些节点包含哪些分片的详细视图。它会告诉你它是否是主分片或副本分片,文档数量,它在磁盘上占用的字节数以及它所在的节点。

对于数据流,API 返回有关流的备份索引的信息。

请求编辑

GET /_cat/shards/<target>

GET /_cat/shards

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,您必须具有 monitormanage 集群权限 才能使用此 API。您还必须具有 monitormanage 索引权限,才能检索任何数据流、索引或别名。

路径参数编辑

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

查询参数编辑

bytes
(可选,字节大小单位) 用于显示字节值的单位。
format
(可选,字符串) HTTP 接受头 的简短版本。有效值包括 JSON、YAML 等。
h

(可选,字符串) 要显示的列名称的逗号分隔列表。

如果您没有指定要包含的列,API 将按以下列出的顺序返回默认列。如果您显式指定一个或多个列,它将只返回指定的列。

有效列是

index, i, idx
(默认) 索引的名称。
shard, s, sh
(默认) 分片的名称。
prirep, p, pr, primaryOrReplica
(默认) 分片类型。返回的值是 primaryreplica
state, st

(默认) 分片的状态。返回的值是

  • INITIALIZING: 分片正在从对等分片或网关恢复。
  • RELOCATING: 分片正在迁移。
  • STARTED: 分片已启动。
  • UNASSIGNED: 分片未分配到任何节点。
docs, d, dc
(默认) 分片中的文档数量,例如 25
store, sto
(默认) 分片使用的磁盘空间,例如 5kb
dataset.size
(默认) 分片数据集使用的磁盘空间,这可能与磁盘上的大小相同或不同,但包括分片在对象存储上使用的空间。报告为大小值,例如 5kb
ip
(默认) 节点的 IP 地址,例如 127.0.1.1
id
(默认) 节点的 ID,例如 k0zy
node, n
(默认) 节点名称,例如 I8hydUG
completion.size, cs, completionSize
完成的大小,例如 0b
dense_vector.value_count, dvc, denseVectorCount
已索引的密集向量的数量。
fielddata.memory_size, fm, fielddataMemory
使用的 fielddata 缓存内存,例如 0b
fielddata.evictions, fe, fielddataEvictions
fielddata 缓存驱逐,例如 0
flush.total, ft, flushTotal
刷新次数,例如 1
flush.total_time, ftt, flushTotalTime
刷新所花费的时间,例如 1
get.current, gc, getCurrent
当前获取操作的数量,例如 0
get.time, gti, getTime
获取所花费的时间,例如 14ms
get.total, gto, getTotal
获取操作的数量,例如 2
get.exists_time, geti, getExistsTime
成功获取所花费的时间,例如 14ms
get.exists_total, geto, getExistsTotal
成功获取操作的数量,例如 2
get.missing_time, gmti, getMissingTime
获取失败所花费的时间,例如 0s
get.missing_total, gmto, getMissingTotal
获取失败操作的数量,例如 1
indexing.delete_current, idc, indexingDeleteCurrent
当前删除操作的数量,例如 0
indexing.delete_time, idti, indexingDeleteTime
删除所花费的时间,例如 2ms
indexing.delete_total, idto, indexingDeleteTotal
删除操作的数量,例如 2
indexing.index_current, iic, indexingIndexCurrent
当前索引操作的数量,例如 0
indexing.index_time, iiti, indexingIndexTime
索引所花费的时间,例如 134ms
indexing.index_total, iito, indexingIndexTotal
索引操作的数量,例如 1
indexing.index_failed, iif, indexingIndexFailed
索引失败操作的数量,例如 0
merges.current, mc, mergesCurrent
当前合并操作的数量,例如 0
merges.current_docs, mcd, mergesCurrentDocs
当前合并文档的数量,例如 0
merges.current_size, mcs, mergesCurrentSize
当前合并的大小,例如 0b
merges.total, mt, mergesTotal
已完成的合并操作的数量,例如 0
merges.total_docs, mtd, mergesTotalDocs
已合并文档的数量,例如 0
merges.total_size, mts, mergesTotalSize
当前合并的大小,例如 0b
merges.total_time, mtt, mergesTotalTime
合并文档所花费的时间,例如 0s
query_cache.memory_size, qcm, queryCacheMemory
使用的查询缓存内存,例如 0b
query_cache.evictions, qce, queryCacheEvictions
查询缓存驱逐,例如 0
recoverysource.type, rs
恢复源的类型。
refresh.total, rto, refreshTotal
刷新次数,例如 16
refresh.time, rti, refreshTime
刷新所花费的时间,例如 91ms
search.fetch_current, sfc, searchFetchCurrent
当前获取阶段操作,例如 0
search.fetch_time, sfti, searchFetchTime
获取阶段所花费的时间,例如 37ms
search.fetch_total, sfto, searchFetchTotal
获取操作的数量,例如 7
search.open_contexts, so, searchOpenContexts
打开的搜索上下文,例如 0
search.query_current, sqc, searchQueryCurrent
当前查询阶段操作,例如 0
search.query_time, sqti, searchQueryTime
查询阶段所花费的时间,例如 43ms
search.query_total, sqto, searchQueryTotal
查询操作的数量,例如 9
search.scroll_current, scc, searchScrollCurrent
打开的滚动上下文,例如 2
search.scroll_time, scti, searchScrollTime
滚动上下文保持打开的时间,例如 2m
search.scroll_total, scto, searchScrollTotal
已完成的滚动上下文,例如 1
segments.count, sc, segmentsCount
段的数量,例如 4
segments.memory, sm, segmentsMemory
段使用的内存,例如 1.4kb
segments.index_writer_memory, siwm, segmentsIndexWriterMemory
索引写入器使用的内存,例如 18mb
segments.version_map_memory, svmm, segmentsVersionMapMemory
版本映射使用的内存,例如 1.0kb
segments.fixed_bitset_memory, sfbm, fixedBitsetMemory
用于嵌套对象字段类型和类型过滤器的固定位集使用的内存,这些类型过滤器用于在 join 字段中引用的类型,例如 1.0kb
seq_no.global_checkpoint, sqg, globalCheckpoint
全局检查点。
seq_no.local_checkpoint, sql, localCheckpoint
本地检查点。
seq_no.max, sqm, maxSeqNo
最大序列号。
suggest.current, suc, suggestCurrent
当前建议操作的数量,例如 0
suggest.time, suti, suggestTime
建议操作花费的时间,例如 0
suggest.total, suto, suggestTotal
建议操作的数量,例如 0
sync_id
分片的同步 ID。
unassigned.at, ua
分片在 协调世界时 (UTC) 中变为未分配的时间。
unassigned.details, ud
关于分片变为未分配的原因的详细信息。这并不能解释为什么分片当前未分配。要了解为什么分片未分配,请使用 集群分配解释 API。
unassigned.for, uf
请求分片在 协调世界时 (UTC) 中变为未分配的时间。
unassigned.reason, ur

指示此未分配分片状态最后更改的原因。这并不能解释为什么分片当前未分配。要了解为什么分片未分配,请使用 集群分配解释 API。返回的值包括

  • ALLOCATION_FAILED: 分配失败导致未分配。
  • CLUSTER_RECOVERED: 整个集群恢复导致未分配。
  • DANGLING_INDEX_IMPORTED: 导入悬空索引导致未分配。
  • EXISTING_INDEX_RESTORED: 恢复到已关闭的索引导致未分配。
  • FORCED_EMPTY_PRIMARY: 使用 集群重新路由 API 强制使用空主分片导致修改分片的分配。
  • INDEX_CLOSED: 由于索引已关闭而未分配。
  • INDEX_CREATED: API 创建索引导致未分配。
  • INDEX_REOPENED: 打开已关闭的索引导致未分配。
  • MANUAL_ALLOCATION: 使用 集群重新路由 API 导致修改分片的分配。
  • NEW_INDEX_RESTORED: 恢复到新索引导致未分配。
  • NODE_LEFT: 托管分片的节点离开集群导致未分配。
  • NODE_RESTARTING: 与 NODE_LEFT 类似,但节点使用 节点关闭 API 注册为正在重启。
  • PRIMARY_FAILED: 分片正在初始化为副本,但主分片在初始化完成之前失败。
  • REALLOCATED_REPLICA: 找到更好的副本位置,导致取消现有副本分配。
  • REINITIALIZED: 当分片从已启动状态变回初始化状态时。
  • REPLICA_ADDED: 显式添加副本导致未分配。
  • REROUTE_CANCELLED: 显式取消重新路由命令导致未分配。
help
(可选,布尔值) 如果为 true,则响应包含帮助信息。默认为 false
master_timeout
(可选,时间单位) 等待主节点的时长。如果在超时时间到期之前主节点不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永远不会超时。
s
(可选,字符串) 用于对响应进行排序的列名或列别名的逗号分隔列表。
time
(可选,时间单位) 用于显示时间值的单位。
v
(可选,布尔值) 如果为 true,则响应包含列标题。默认为 false

示例edit

单个数据流或索引的示例edit

response = client.cat.shards
puts response
GET _cat/shards

API 返回以下响应

my-index-000001 0 p STARTED 3014 31.1mb 192.168.56.10 H5dfFeA

使用通配符模式的示例edit

如果您的集群包含许多分片,您可以在 <target> 路径参数中使用通配符模式来限制 API 请求。

以下请求将返回以 my-index- 开头的任何数据流或索引的信息。

response = client.cat.shards(
  index: 'my-index-*'
)
puts response
GET _cat/shards/my-index-*

API 返回以下响应

my-index-000001 0 p STARTED 3014 31.1mb 192.168.56.10 H5dfFeA

正在重新分配的分片的示例edit

response = client.cat.shards
puts response
GET _cat/shards

API 返回以下响应

my-index-000001 0 p RELOCATING 3014 31.1mb 192.168.56.10 H5dfFeA -> -> 192.168.56.30 bGG90GE

state 列中的 RELOCATING 值表示索引分片正在重新分配。

分片状态的示例edit

在分片可供使用之前,它会经历 INITIALIZING 状态。您可以使用 cat shards API 查看哪些分片正在初始化。

response = client.cat.shards
puts response
GET _cat/shards

API 返回以下响应

my-index-000001 0 p STARTED      3014 31.1mb 192.168.56.10 H5dfFeA
my-index-000001 0 r INITIALIZING    0 14.3mb 192.168.56.30 bGG90GE

未分配分片原因的示例edit

以下请求将返回 unassigned.reason 列,该列指示为什么分片未分配。

response = client.cat.shards(
  h: 'index,shard,prirep,state,unassigned.reason'
)
puts response
GET _cat/shards?h=index,shard,prirep,state,unassigned.reason

API 返回以下响应

my-index-000001 0 p STARTED    3014 31.1mb 192.168.56.10 H5dfFeA
my-index-000001 0 r STARTED    3014 31.1mb 192.168.56.30 bGG90GE
my-index-000001 0 r STARTED    3014 31.1mb 192.168.56.20 I8hydUG
my-index-000001 0 r UNASSIGNED ALLOCATION_FAILED