日期: 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”表示禁用索引元数据的读写