html网站源代码网站推广需要几个人做
web/
2025/9/28 18:31:20/
文章来源:
html网站源代码,网站推广需要几个人做,wordpress兼职,wordpress大侠文章目录 1、索引阻塞的种类2、什么时候使用阻塞#xff1f;场景1#xff1a;进行系统维护场景。场景2#xff1a;保护数据不被随意更改场景。场景3#xff1a;优化资源使用的场景。场景4#xff1a;遵守安全规则场景。 3、添加索引阻塞API4、解除设置 API5、小结6、参考 … 文章目录 1、索引阻塞的种类2、什么时候使用阻塞场景1进行系统维护场景。场景2保护数据不被随意更改场景。场景3优化资源使用的场景。场景4遵守安全规则场景。 3、添加索引阻塞API4、解除设置 API5、小结6、参考 Elasticsearch 是一种强大的搜索和分析引擎被广泛用于各种应用中以其强大的全文搜索能力而著称。
不过在日常管理 Elasticsearch 时我们经常需要对索引进行保护以防止数据被意外修改或删除特别是在进行系统维护或者需要优化资源使用时。
Elasticsearch提供了一种名为“索引阻塞Index blocks”的功能让我们能够限制对某个索引的操作类型。 Elasticsearch的索引阻塞功能在早期版本中就已存在用于管理对索引的访问和操作。随着 Elasticsearch 版本的更新该功能也在不断得到改进和扩展。
参见官方文档https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-blocks.html
大白话——索引阻塞就是给我们的索引加把锁防止别人随意修改。
1、索引阻塞的种类
Elasticsearch中的索引阻塞可以根据需要限制对索引的读取、写入或元数据操作。
所谓的元数据可以理解为索引的基本信息和设置比如索引包含哪些字段这些字段是什么类型的等等。
这些阻塞可以通过动态索引设置添加或移除也可以通过专门的API来添加这样做的好处是能确保在添加写入阻塞后所有索引的分片都正确地应用了阻塞比如确保在添加写入阻塞后所有正在进行的写入操作都已完成。
以下是一些动态索引设置用于确定索引上存在的阻塞类型
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以禁用索引元数据的读写操作。
设置名称描述index.blocks.read_only设置为true使索引及索引元数据只读设置为false则允许写入和元数据更改。index.blocks.read_only_allow_delete类似于index.blocks.write但也允许删除索引以释放更多资源。磁盘基础的分片分配器可能会自动添加和移除这个阻塞。index.blocks.read设置为true以禁用对索引的读取操作。index.blocks.write设置为true以禁用对索引的数据写入操作。与read_only不同这个设置不影响元数据。例如你可以调整带有写入阻塞的索引的设置但不能调整带有read_only阻塞的索引的设置。index.blocks.metadata设置为true以禁用索引元数据的读写操作。
解释一下index.blocks.read_only 和 index.blocks.write 区别
如下设置了禁止写入但是可以修改索引的设置比如副本数的调整这个是允许的。
PUT test-001/_settings
{blocks.write: true
}PUT test-001/_settings
{number_of_replicas: 2
}但是换成这样
PUT test-002
PUT test-002/_settings
{blocks.read_only: true
}PUT test-002/_settings
{number_of_replicas: 2
}如上的 read_only 设置后如果再进行修改索引设置的设置就会报错。
{error: {root_cause: [{type: cluster_block_exception,reason: index [test-002] blocked by: [FORBIDDEN/5/index read-only (api)];}],type: cluster_block_exception,reason: index [test-002] blocked by: [FORBIDDEN/5/index read-only (api)];},status: 403
}简而言之index.blocks.write 允许你保护索引内容的稳定性同时仍然可以调整索引的配置来应对不同的需求或进行优化。而 index.blocks.read_only 则是一种更为严格的保护确保索引在某段时间内完全不被更改。
2、什么时候使用阻塞
场景1进行系统维护场景。
比如当你需要升级系统或者做一些关键的维护工作时可能不希望在这期间有任何索引结构的变化。
通过阻止别人修改索引的元数据确保索引的设置保持不变维护索引设置的稳定性。
场景2保护数据不被随意更改场景。
举例如果咱们的业务数据是非常关键的比如已经归档的日志或者历史记录这些数据通常是不允许被更改的。
防止关键数据被随意更改或删除确保数据的完整性和准确性。
场景3优化资源使用的场景。
举例有时候某个索引可能占用了太多资源你可能暂时不想让它继续增长。
通过控制索引的读写操作帮助管理系统资源避免因为资源过度使用而导致系统变慢或崩溃。
场景4遵守安全规则场景。
举例对于一些敏感数据可能要求严格的访问控制不希望随便被读取或更改。
对于需要严格控制的敏感数据通过设置阻塞来限制数据的访问和修改保障数据安全。
3、添加索引阻塞API
使用范例参考
PUT /index/_block/blockindex可选字符串逗号分隔的索引名列表或通配符表达式用于限制请求。 block必需字符串要添加到索引的阻塞类型。
举例如下 API 用于给索引添加一个阻塞写入。
PUT /my-index-000001/_block/write设置禁止写入后如果再写入就会报错。
reason: index [my-index-000001] blocked by: [FORBIDDEN/8/index write (api)];通过执行 PUT /my-index-000001/_block/write命令我们可以向名为my-index-000001的索引添加一个写入阻塞。成功执行此命令后任何试图写入该索引的操作都将被阻止直到该阻塞被显式移除。
除此之外最常用的一个锁叫做 blocks.metadata。当我们把这个设置开启设置为true后别人就不能修改索引的元数据了。
举个例子如果你在管理一个多租户的SaaS应用每个租户都有自己独特的索引设置和映射。你肯定不希望有一天突然有人改变了这些设置导致系统运行不正常。这时候就可以使用 blocks.metadata 这个锁来防止索引的元数据被修改。
PUT testPUT test/_settings
{blocks.metadata: true
}如下的所有操作都会报错
GET test
GET test/_settings
GET test/_mappingPUT test/_doc/1
{title: 1111
}但是如下检索是可以正常进行的。
GET test/_search
{query: {match_all: {}}
}4、解除设置 API
要解除已经设置的索引阻塞可以将相应的阻塞设置修改为false或使用 null来移除特定的阻塞。例如要移除索引的 read_only阻塞可以使用以下命令
PUT /index/_settings
{ index.blocks.read_only: false }请注意在进行此操作之前确保已经解决了导致设置阻塞的原因如磁盘空间不足等。
5、小结
Elasticsearch的索引阻塞功能为数据提供了一层额外的保护确保数据能够按照预期安全、正确地被处理和访问。
这套功能在系统维护、数据保护、资源优化和安全增强等方面特别有用。
通过熟悉Elasticsearch提供的各种索引阻塞设置可以有效管理对索引的访问保障数据完整性高效利用资源并加强数据的安全性。正确使用这些强大的工具需要深入理解它们的作用和应用场景。
6、参考
https://kulekci.medium.com/elasticsearch-index-blocks-a-deep-dive-into-data-protection-b2ecc4b780c8
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83471.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!