索引分段 API

编辑

返回有关索引分片中 Lucene 分段的低级信息。对于数据流,该 API 返回有关数据流后端索引的信息。

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

请求

编辑

GET /<target>/_segments

GET /_segments

先决条件

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

路径参数

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

查询参数

编辑
<vector_formats>
(可选,布尔值) 如果 true,则输出 attributes 中包含每个分段中字段使用的向量格式列表。默认为 false
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

响应主体

编辑
<segment>
(字符串) 分段的名称,例如 _0。分段名称源自分段生成,并在内部用于创建分片目录中的文件名。
generation
(整数) 生成编号,例如 0。Elasticsearch 为写入的每个分段递增此生成编号。然后,Elasticsearch 使用此编号来推导出分段名称。
num_docs
(整数) Lucene 报告的文档数量。这排除了已删除的文档,并单独计算任何 嵌套文档 与其父级。它还排除了最近建立索引且尚未属于分段的文档。
deleted_docs
(整数) Lucene 报告的已删除文档数量,可能高于或低于您执行的删除操作数。此数字排除了最近执行的删除操作,这些删除操作尚未属于分段。如果这样做有意义,则 自动合并过程 将清理已删除的文档。此外,Elasticsearch 创建额外的已删除文档以在内部跟踪分片上操作的近期历史记录。
size_in_bytes
(整数) 分段使用的磁盘空间,例如 50kb
committed

(布尔值) 如果 true,则分段已同步到磁盘。已同步的分段可以在硬重启后继续存在。

如果 false,则未提交分段的数据也存储在事务日志中,以便 Elasticsearch 能够在下一次启动时重放更改。

search

(布尔值) 如果 true,则分段可搜索。

如果 false,则分段很可能已写入磁盘,但需要进行 刷新 才能进行搜索。

version
(字符串) 用于写入分段的 Lucene 版本。
compound
(布尔值) 如果 true,则 Lucene 将分段中的所有文件合并到一个文件中以节省文件描述符。
attributes
(对象) 包含有关 (i) 是否启用了高压缩率,(ii) 每个字段的向量格式的信息。

示例

编辑

获取特定数据流或索引的分段信息

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

获取多个数据流和索引的分段信息

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

获取群集中的所有数据流和索引的分段信息

编辑
resp = client.indices.segments()
print(resp)
response = client.indices.segments
puts response
const response = await client.indices.segments();
console.log(response);
GET /_segments

API 返回以下响应

{
  "_shards": ...
  "indices": {
    "test": {
      "shards": {
        "0": [
          {
            "routing": {
              "state": "STARTED",
              "primary": true,
              "node": "zDC_RorJQCao9xf9pg3Fvw"
            },
            "num_committed_segments": 0,
            "num_search_segments": 1,
            "segments": {
              "_0": {
                "generation": 0,
                "num_docs": 1,
                "deleted_docs": 0,
                "size_in_bytes": 3800,
                "committed": false,
                "search": true,
                "version": "7.0.0",
                "compound": true,
                "attributes": {
                }
              }
            }
          }
        ]
      }
    }
  }
}