Elasticsearch官方文档翻译-Index blocks

本系列文章翻译ES官方8.0版本文档。本章对应内容地址 Index blocks

因为水平有限,翻译内容难免存在错漏,欢迎大家指出

点击跳转本系列目录

Index blocks

(未想到合适的翻译词,大致意思为限制索引操作的配置)。Index blocks限制特定索引可以执行的操作类型,这些blocks包含不同的种类如禁止写,禁止读和禁止元数据操作。所有的blocks可以通过API接口进行动态的添加,设置或删除。当用户设置写block并且得到成功的返回时说明该索引的所有分片都以正确的应用了该block并进行了相应的处理,比如索引的分片都会保证在写block应用前所有在进行中的写入操作都会得到正确的执行。

设置Index blocks

如下的blocks可动态的设置到索引上:

index.blocks.read_only 设置为true则该索引和索引的元数据都将是只读的,设置为false则索引可以写入也可以修改元数据。

index.blocks.read_only_allow_delete 类似index.blocks.read_only ,但是允许删除索引。 disk-based shard allocator有时会自动的给索引添加或删除该blcok。

在ES中删除索引中的文档而不删除整个索引大多数时候会增加磁盘的使用空间(与Lucene机制有关,只有段合并时删除的文档才会真正的从磁盘上删除),当设置index.blocks.read_only_allow_delete为true时,将无法单独的删除索引中的文档,只有当删除整个索引时这个blcok才会释放,并且释放系统的磁盘资源。

tip:Elasticsearch会在磁盘达到预警线时自动的为索引添加index.blocks.read_only_allow_delete blcok由cluster.routing.allocation.disk.watermark.flood_stage控制。

index.blocks.read设置为true则索引禁止读操作。

index.blocks.write 设置为true则索引禁止写操作,与read_only block不同,本block不影响对索引元数据的操作。如添加了write block的索引可以被关闭,但是添加了read_only block的索引则无法执行该操作。

index.blocks.metadata 设置为true禁止对索引元数据的读和写操作。

添加Index block的API

可按如下API为索引添加block

PUT /my-index-000001/_block/write

请求格式

PUT /my-index-000001/_block/write

路径参数

<index>,(可选,string)索引名称支持通配符和逗号分隔。默认情况下需要填写完整的索引名称,如果想要_all*, 其他通配格式对多个索引进行设置,需要将action.destructive_requires_name配置项设置为false。该配置项可在elasticsearch.yml文件中设置也 cluster update settings API 设置

<block>,(必填,string)block种类,支持metadata,read,read_only和write四种。

查询参数

allow_no_indices,(可选,Boolean)如果传入false,则如果查询条件中任意一个索引名称未找到活跃的索引都会返回错误,即使其他的索引名称查询到了活跃的索引。例如,当使用foo*,bar*作为条件查询时,如果找到foo开头的索引,但是未找到bar开头的索引,则返回错误。该参数默认为true

expand_wildcards,(可选,string)索引状态匹配,支持逗号分隔,如open,hidden。支持的值有

  • all 匹配所有状态的索引和data sream。
  • open 匹配活跃但没有隐藏的索引和data stream。
  • closed 匹配关闭但没有隐藏的索引。data stream无法closed。
  • hidden 匹配所有隐藏的索引和data stream。
  • none 不接受通配符匹配

该参数默认为open

ignore_unavailable,(可选,Boolean)如果传入true,则缺少和关闭的索引将不会包含在返回结果中。默认为false

master_timeout,(可选,time units)等待主节点连接的超时时间,超时则返回错误。默认30s

master_timeout,(可选,time units)响应超时时间,超时返回错误。默认30s

示例

添加一个block如下

PUT /my-index-000001/_block/write

返回结果如下

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "indices" : [ {
    "name" : "my-index-000001",
    "blocked" : true
  } ]
}

 

 

elasticsearch.yml

posted @ 2022-02-13 23:11  qqfde  阅读(900)  评论(0编辑  收藏  举报