--- title: "查询分段信息(Cat格式)" date: 2026-03-03 lastmod: 2026-03-03 description: "以表格形式查询Lucene分段信息" tags: ["分段", "Lucene", "Cat API"] summary: "以紧凑的表格形式返回索引的 Lucene 分段信息。 API 格式 # GET /_cat/segments GET /_cat/segments/{index} API 作用 # 该 API 以表格形式返回 Lucene 分段信息: 显示所有索引或指定索引的分段 显示分段的文档数量和大小 显示分段的内存使用情况 显示分段是否可搜索和已提交 API 参数 # 路径参数 # 参数 类型 是否必填 默认值 描述 {index} String 否 所有索引 逗号分隔的索引名称列表,支持通配符 查询参数 # 参数 类型 是否必填 默认值 描述 format String 否 文本表格 响应格式(如 json、yaml) h String 否 所有列 逗号分隔的列名列表 v Boolean 否 false 是否显示列标题 help Boolean 否 false 是否返回帮助信息 local Boolean 否 false 是否仅返回本地集群状态 master_timeout Time 否 30s 等待主节点的超时时间 响应列说明 # 列名 别名 描述 index i, idx 索引名称 shard s, sh 分片名称 prirep p, pr, primaryOrReplica 主分片或副本分片(p/r) ip - 分段所在节点的 IP 地址 id - 分段所在节点的唯一 ID segment seg 分段名称 generation g, gen 分段代数 docs." --- 以紧凑的表格形式返回索引的 Lucene 分段信息。 ## API 格式 ``` GET /_cat/segments GET /_cat/segments/{index} ``` ## API 作用 该 API 以表格形式返回 Lucene 分段信息: - 显示所有索引或指定索引的分段 - 显示分段的文档数量和大小 - 显示分段的内存使用情况 - 显示分段是否可搜索和已提交 ## API 参数 ### 路径参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `{index}` | String | 否 | 所有索引 | 逗号分隔的索引名称列表,支持通配符 | ### 查询参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `format` | String | 否 | 文本表格 | 响应格式(如 `json`、`yaml`) | | `h` | String | 否 | 所有列 | 逗号分隔的列名列表 | | `v` | Boolean | 否 | `false` | 是否显示列标题 | | `help` | Boolean | 否 | `false` | 是否返回帮助信息 | | `local` | Boolean | 否 | `false` | 是否仅返回本地集群状态 | | `master_timeout` | Time | 否 | `30s` | 等待主节点的超时时间 | ## 响应列说明 | 列名 | 别名 | 描述 | |------|------|------| | `index` | `i`, `idx` | 索引名称 | | `shard` | `s`, `sh` | 分片名称 | | `prirep` | `p`, `pr`, `primaryOrReplica` | 主分片或副本分片(p/r) | | `ip` | - | 分段所在节点的 IP 地址 | | `id` | - | 分段所在节点的唯一 ID | | `segment` | `seg` | 分段名称 | | `generation` | `g`, `gen` | 分段代数 | | `docs.count` | `dc`, `docsCount` | 分段中的文档数 | | `docs.deleted` | `dd`, `docsDeleted` | 分段中已删除的文档数 | | `size` | - | 分段大小(字节) | | `size.memory` | `sm`, `sizeMemory` | 分段内存使用(字节) | | `committed` | `ic`, `isCommitted` | 分段是否已提交 | | `searchable` | `is`, `isSearchable` | 分段是否可搜索 | | `version` | `v`, `ver` | Lucene 版本 | | `compound` | `ico`, `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 格式 ```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` - **基础 API**:`RestIndicesSegmentsAction.java` - **基础类**:`AbstractCatAction.java`