📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

以紧凑的表格形式返回索引的 Lucene 分段信息。

API 格式 #

GET /_cat/segments
GET /_cat/segments/{index}

API 作用 #

该 API 以表格形式返回 Lucene 分段信息:

  • 显示所有索引或指定索引的分段
  • 显示分段的文档数量和大小
  • 显示分段的内存使用情况
  • 显示分段是否可搜索和已提交

API 参数 #

路径参数 #

参数类型是否必填默认值描述
{index}String所有索引逗号分隔的索引名称列表,支持通配符

查询参数 #

参数类型是否必填默认值描述
formatString文本表格响应格式(如 jsonyaml
hString所有列逗号分隔的列名列表
vBooleanfalse是否显示列标题
helpBooleanfalse是否返回帮助信息
localBooleanfalse是否仅返回本地集群状态
master_timeoutTime30s等待主节点的超时时间

响应列说明 #

列名别名描述
indexi, idx索引名称
shards, sh分片名称
prirepp, pr, primaryOrReplica主分片或副本分片(p/r)
ip-分段所在节点的 IP 地址
id-分段所在节点的唯一 ID
segmentseg分段名称
generationg, gen分段代数
docs.countdc, docsCount分段中的文档数
docs.deleteddd, docsDeleted分段中已删除的文档数
size-分段大小(字节)
size.memorysm, sizeMemory分段内存使用(字节)
committedic, isCommitted分段是否已提交
searchableis, isSearchable分段是否可搜索
versionv, verLucene 版本
compoundico, isCompound分段是否为复合分段

请求示例 #

查询所有索引的分段 #

GET /_cat/segments?v

查询指定索引的分段 #

GET /_cat/segments/my_index?v

选择显示列 #

GET /_cat/segments?h=index,shard,segment,docs.count,size&v

JSON 格式 #

GET /_cat/segments?format=json

响应示例 #

文本表格格式(verbose 模式) #

index   shard prirep ip        id         segment generation docs.count docs.deleted size  size.memory committed searchable version compound
my_index 0     p      192.168.1.10 node-abc123 _0             5         1000        0     1mb   2mb        true      true      8.0.0   true
my_index 0     r      192.168.1.11 node-def456 _0             5         1000        0     1mb   2mb        true      true      8.0.0   true
logs    0     p      192.168.1.10 node-abc123 _0             10        50000       0     5mb   10mb       true      true      8.0.0   true
logs    0     r      192.168.1.11 node-def456 _0             10        50000       0     5mb   10mb       true      true      8.0.0   true

JSON 格式 #

[
  {
    "index": "my_index",
    "shard": "0",
    "prirep": "p",
    "ip": "192.168.1.10",
    "id": "node-abc123",
    "segment": "_0",
    "generation": "5",
    "docs.count": "1000",
    "docs.deleted": "0",
    "size": "1048576",
    "size.memory": "2097152",
    "committed": "true",
    "searchable": "true",
    "version": "8.0.0",
    "compound": "true"
  }
]

分段字段说明 #

分段类型 #

  • 复合分段:包含多个子分段的复合文件,通常已优化
  • 单一分段:单独的分段文件

分段状态 #

  • 已提交:分段已持久化到磁盘
  • 可搜索:分段可被搜索查询访问

分段代数 #

  • 较高的代数表示较新的分段
  • 代数随合并操作增加

使用场景 #

  1. 性能分析:分析分段数量和大小对查询性能的影响
  2. 合并优化:确定哪些索引需要强制合并
  3. 内存分析:检查分段的内存使用情况
  4. 故障排查:识别包含大量已删除文档的分段

注意事项 #

  1. v 参数:使用 ?v 显示列标题
  2. 大型索引:拥有大量分段的索引响应会很长
  3. 实时数据:分段信息来自 Lucene 的实时元数据
  4. 节点信息:节点已离开集群时显示为 -

相关操作 #

  • POST /{index}/_forcemerge:强制合并分段
  • GET /_cat/indices:查看索引详细信息
  • GET /{index}/_segments:获取详细的分段信息

实现文件 #

  • REST 处理器RestSegmentsAction.java
  • 基础 APIRestIndicesSegmentsAction.java
  • 基础类AbstractCatAction.java