索引分段 API
编辑索引分段 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
路径参数
编辑-
<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
- 匹配隐藏的数据流和隐藏的索引。必须与
open
、closed
或两者结合使用。 -
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": { } } } } ] } } } }