日期: August 23, 2023
磁盘水位线
查看
GET _cluster/settings
低水位线
cluster.routing.allocation.disk.watermark.low
磁盘使用达到低水位线该节点将停止分配新的分片
高水位线
cluster.routing.allocation.disk.watermark.high
达到高水位线会将该节点的分片移到其他节点
洪泛水位线
cluster.routing.allocation.disk.watermark.flood_stage
达到洪泛水位线ES会阻止向该节点的任何索引写入数据
此时会将索引标记为index.blocks.read_only_allow_delete状态
索引的不同状态
index.blocks.read_only
“true”表示索引和索引元数据只读
“false”表示允许写入和元数据改变
index.blocks.read_only_allow_delete
类似于index.blocks.read_only,但允许删除索引释放磁盘资源
基于磁盘的分片分配器(The disk-based shard allocator)可以自动添加和删除index.blocks.read_only属性的数据块
这里引申出删除索引文档和删除索引本身的区别:
(1)删除索引文档会出现删除后磁盘使用率反而增加的现象,因为删除的本质是version的update;只有删除索引才相当于物理删除,会立即释放磁盘空间
(2)当index.blocks.read_only_allow_delete为true时,删除文档是不允许的,仅允许删除索引
(3)当磁盘使用率达到洪泛警戒水位线时,Elasitcsearch会强制所有包含分片数据的索引设置为:index.blocks.read_only_allow_delete
(4)当磁盘使用率低于高警戒水位线时,index.blocks.read_only_allow_delete属性会自动释放
index.blocks.read
“true”表示索引禁止读操作,不涉及元数据
index.blocks.write
“true”表示索引禁止数据写入操作,不涉及元数据
和index.blocks.read_only不同,blocks.read_only影响的还有元数据,元数据只读,但blocks.write不涉及元数据
例如:blocks.write的索引你可以关闭,但blocks.read_only的索引无法关闭,因为索引的开关涉及元数据的变化
index.blocks.metadata
“true”表示禁用索引元数据的读写