cat 分片 API
编辑cat 分片 API编辑
cat API 仅供使用命令行或 Kibana 控制台的人类使用。它们不适用于应用程序。
The shards
命令是关于哪些节点包含哪些分片的详细视图。它会告诉你它是否是主分片或副本分片,文档数量,它在磁盘上占用的字节数以及它所在的节点。
对于数据流,API 返回有关流的备份索引的信息。
先决条件编辑
路径参数编辑
-
<target>
- (可选,字符串) 用于限制请求的数据流、索引和别名的逗号分隔列表。支持通配符 (
*
)。要定位所有数据流和索引,请省略此参数或使用*
或_all
。
查询参数编辑
-
bytes
- (可选,字节大小单位) 用于显示字节值的单位。
-
format
- (可选,字符串) HTTP 接受头 的简短版本。有效值包括 JSON、YAML 等。
-
h
-
(可选,字符串) 要显示的列名称的逗号分隔列表。
如果您没有指定要包含的列,API 将按以下列出的顺序返回默认列。如果您显式指定一个或多个列,它将只返回指定的列。
有效列是
-
index
,i
,idx
- (默认) 索引的名称。
-
shard
,s
,sh
- (默认) 分片的名称。
-
prirep
,p
,pr
,primaryOrReplica
- (默认) 分片类型。返回的值是
primary
或replica
。 -
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