对于index.blocks.write究竟有什么用,为什么要有这个参数,我们可以了解一下
在日常管理 Elasticsearch 时,我们经常需要对索引进行保护,以防止数据被意外修改或删除,特别是在进行系统维护或者需要优化资源使用时。
Elasticsearch提供了一种名为“索引阻塞(Index blocks)”的功能,让我们能够限制对某个索引的操作类型。
大白话——"索引阻塞"就是给我们的索引加把锁,防止别人随意修改。
索引阻塞的种类
Elasticsearch中的索引阻塞可以根据需要,限制对索引的读取、写入或元数据操作。
所谓的元数据,可以理解为索引的基本信息和设置,比如索引包含哪些字段,这些字段是什么类型的等等。
以下是一些动态索引设置,用于确定索引上存在的阻塞类型:
- index.blocks.read_only:设置为 true 使索引及索引元数据只读,设置为false则允许写入和元数据更改。
- index.blocks.read_only_allow_delete:类似于index.blocks.read_only,但也允许删除索引以释放更多资源。
- index.blocks.read:设置为 true 以禁用对索引的读取操作。
- index.blocks.write:设置为 true 以禁用对索引的数据写入操作。与read_only不同,这个设置不影响元数据。例如,你可以调整带有写入阻塞的索引的设置,但不能调整带有read_only阻塞的索引的设置。
- index.blocks.metadata:设置为true以禁用索引元数据的读写操作。
什么时候使用索引阻塞
场景1:进行系统维护场景。
比如,当你需要升级系统或者做一些关键的维护工作时,可能不希望在这期间有任何索引结构的变化。
通过阻止别人修改索引的元数据,确保索引的设置保持不变,维护索引设置的稳定性。
场景2:保护数据不被随意更改场景。
举例:如果咱们的业务数据是非常关键的,比如已经归档的日志或者历史记录,这些数据通常是不允许被更改的。
防止关键数据被随意更改或删除,确保数据的完整性和准确性。
场景3:优化资源使用的场景。
举例:有时候某个索引可能占用了太多资源,你可能暂时不想让它继续增长。
通过控制索引的读写操作,帮助管理系统资源,避免因为资源过度使用而导致系统变慢或崩溃。
场景4:遵守安全规则场景。
举例:对于一些敏感数据,可能要求严格的访问控制,不希望随便被读取或更改。
对于需要严格控制的敏感数据,通过设置阻塞来限制数据的访问和修改,保障数据安全。