索引块
edit索引块
edit索引块限制了在特定索引上可用的操作类型。这些块有不同的类型,允许阻止写入、读取或元数据操作。可以通过动态索引设置来设置/移除这些块,或者可以使用专用API来添加这些块,该API还确保对于写入块,一旦成功返回给用户,索引的所有分片都正确地记录了该块,例如,在添加写入块后,所有对索引的正在进行的写入操作都已完成。
索引块设置
edit以下动态索引设置决定了索引中存在的块:
-
index.blocks.read_only -
设置为
true以使索引和索引元数据为只读,false以允许写入和元数据更改。 -
index.blocks.read_only_allow_delete -
类似于
index.blocks.write,除了当此块生效时可以删除索引。请勿自行设置或移除此块。基于磁盘的分片分配器会根据可用磁盘空间自动设置和移除此块。从索引中删除文档以释放资源(而不是删除索引本身)会暂时增加索引大小,因此在节点磁盘空间不足时可能不可行。当
index.blocks.read_only_allow_delete设置为true时,不允许删除文档。然而,完全删除索引所需的额外磁盘空间非常少,并且几乎可以立即释放索引占用的磁盘空间,因此仍然允许这样做。当磁盘利用率超过洪水阶段水印时,Elasticsearch会自动添加只读允许删除索引块,并在磁盘利用率降至高水印以下时自动移除此块。有关水印的更多信息,请参阅基于磁盘的分片分配设置,以及修复水印错误以获取解决水印问题的帮助。
-
index.blocks.read -
Set to
trueto disable read operations against the index.
-
index.blocks.write -
Set to
trueto disable data write operations against the index. Unlikeread_only, this setting does not affect metadata. For instance, you can adjust the settings of an index with awriteblock, but you cannot adjust the settings of an index with aread_onlyblock. -
index.blocks.metadata -
设置为
true以禁用索引元数据的读取和写入。
添加索引块 API
edit向索引添加一个索引块。
PUT /my-index-000001/_block/write
请求
editPUT /
路径参数
edit-
<index> -
(可选, 字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。
默认情况下,您必须明确指定要添加块的索引。 要允许将块添加到使用
_all、*或其他通配符表达式的索引,请将action.destructive_requires_name设置更改为false。 您可以在elasticsearch.yml文件中更新此设置, 或使用 集群更新设置 API 进行更新。 -
<block> -
(必需,字符串) 要添加到索引中的块类型。
Valid values for
<block>-
metadata - Disable metadata changes, such as closing the index.
-
read - Disable read operations.
-
read_only - Disable write operations and metadata changes.
-
write - Disable write operations. However, metadata changes are still allowed.
-
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
示例
edit以下示例展示了如何添加索引块:
PUT /my-index-000001/_block/write
API返回以下响应:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"indices" : [ {
"name" : "my-index-000001",
"blocked" : true
} ]
}