索引块-《elasticsearch中文文档帮助手册教程V7.11》

admin 2025-11-04 00:05:52 数据库 来源:ZONE.CI 全球网 0 阅读模式
  • 索引块
    • 索引块设置
    • 添加索引块 API
      • 请求
      • 路径参数
      • 查询参数
    • 例子

    索引块

    索引块限制对指定的索引的可用的操作类型。这些块有不同的风格,可以阻止写、读或元数据操作。块可以通过动态索引设置来设置/移除,也可以通过专用API添加,这也可以确保写入块一旦成功返回用户,所有索引分片都能正确地计算该块,例如,在添加写块后,所有对索引进行中的写入会完成。

    索引块设置

    以下的动态(dynamic)索引设置会影响索引上已存在的块:

    • index.blocks.read_only

    设置 true 时,索引及索引元数据只读,false 允许写以及元数据变更。

    • index.blocks.read_only_allow_delete

    类似于 index.blocks.read_only,但也允许删除索引以获取更多资源。基于硬盘的分片分配器可以自动添加和移除块。

    从索引中删除文档以释放资源——而不是删除索引本身——随着时间推移会增加索引大小。当 index.blocks.read_only_allow_delete 设置为 true 时,删除索引是不允许的。然而,删除索引自身会释放只读索引块,并使资源几乎立即可用。

    !> 在磁盘利用率低于高水位线时,Elasticsearch 自动添加和移除只读索引块,由 cluster.routing.allocation.disk.watermark.flood_stage 控制。

    • index.blocks.read

    设置为 true,可禁用对索引的读取操作。

    • index.blocks.write

    设置为 true,可禁用对索引的数据写操作。不像 read_only,这个设置不会影响元数据。例如,你可以用 write(写)块关闭索引,但不能用 read_only(只读)块关闭索引。

    • index.blocks.metadata

    设置为 true,禁用索引元数据读写。

    添加索引块 API

    为索引添加一个索引块。

    1. PUT /my-index-000001/_block/write

    请求

    PUT /<index>/_block/<block>

    路径参数

    • <index>

    (可选,字符串)逗号分隔的列表或通配符表达式的索引名称,用于限定请求。

    为所有索引添加块,使用 _all*。为了禁止通过 _all 或通配符表达式添加块,修改集群设置 action.destructive_requires_nametrue。你可以在文件 elasticsearch.yml 中修改设置,或者通过集群更新设置 API。

    • <block>

    (必需,字符串)添加给索引的块类型。

    有效值:

    1. metadata 禁用元数据变更,比如关闭索引。
    2. read 禁用读操作。
    3. read_only 禁用写操作和元数据变更。
    4. write 禁用写操作。然后,允许元数据变更。

    查询参数

    • allow_no_indices

    (可选,布尔值)如果为 false,任何通配符、索引别名或 _all 值只针对丢失或关闭的索引,请求将返回一个错误。即使请求以其他开启索引为目标,此行为也适用。例如,如果一个索引以 foo 开头,而没有索引以 bar 开头,则以 foo*,bar* 为目标的请求将返回错误。

    默认为 true

    • expand_wildcards

    (可选,字符串)通配符表达式可以匹配的索引类型。如果请求可以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,如 open,hidden。有效的值有:

    1. all 匹配任何数据流或索引,包括 hidden(隐藏的)。
    2. open 匹配 open(开启)、非隐藏的索引。也匹配任何非隐藏的数据流。
    3. closed 匹配 closed(关闭)、非隐藏的索引。也匹配任何非隐藏的数据流。数据流不能关闭。
    4. hidden 匹配隐藏数据流和隐藏索引。必须与 openclosed 或一起使用。
    5. none 不接受通配符表达式。

    默认为 open

    • ignore_unavailable

    (可选,布尔值)如果为 true,丢失的或关闭的索引不包含在响应中。默认为 false

    • master_timeout

    (可选,时间单位)等待连接到主节点的时间。如果在超时过期前没有收到响应,则请求失败并返回错误。默认为 30s

    • timeout

    (可选,时间单位)等待响应的时间。如果在超时过期之前没有收到响应,则请求失败并返回错误。默认为 30s

    例子

    以下例子展示如何添加一个索引块:

    1. PUT /my-index-000001/_block/write

    API 返回以下响应:

    1. {
    2. "acknowledged" : true,
    3. "shards_acknowledged" : true,
    4. "indices" : [ {
    5. "name" : "my-index-000001",
    6. "blocked" : true
    7. } ]
    8. }

    原文链接

    评论:0   参与:  10