【包邮送书】Elasticsearch 通过索引阻塞实现数据保护深入解析

news2024/12/23 13:32:35

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关注公粽号 《机器和智能》 回复关键词 “python项目实战” 即可获取美哆商城视频资源!


博主介绍:
CSDN博客专家,CSDN优质创作者,CSDN实力新星,CSDN内容合伙人;
阿里云社区专家博主;
华为云社区云享专家;
51CTO社区入驻博主,掘金社区入驻博主,支付宝社区入驻博主,博客园博主。


《一本书讲透Elasticsearch:原理、进阶与工程实践 杨昌玉 著》


🎉🎉🎉🎉🎉 重磅福利 🎉🎉🎉🎉🎉
🎉本次送2套书 ,评论区抽2位小伙伴送书
🎉活动时间:截止到 2024-03-3010:00:00
🎉抽奖方式:评论区随机抽奖。
🎉参与方式:关注博主、点赞、收藏,评论。
❗注意:一定要关注博主,不然中奖后将无效!
🎉通知方式:通过私信联系中奖粉丝。
💡提示:有任何疑问请私信公粽号 《机器和智能》


专栏:《Linux内核设计思想与源码分析》


Elasticsearch 是一种强大的搜索和分析引擎,被广泛用于各种应用中,以其强大的全文搜索能力而著称。

不过,在日常管理 Elasticsearch 时,我们经常需要对索引进行保护,以防止数据被意外修改或删除,特别是在进行系统维护或者需要优化资源使用时。

Elasticsearch提供了一种名为“索引阻塞(Index blocks)”的功能,让我们能够限制对某个索引的操作类型。
在这里插入图片描述
Elasticsearch的索引阻塞功能在早期版本中就已存在,用于管理对索引的访问和操作。随着 Elasticsearch 版本的更新,该功能也在不断得到改进和扩展。

大白话——"索引阻塞"就是给我们的索引加把锁,防止别人随意修改。

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/<block>


<index>:(可选,字符串)逗号分隔的索引名列表或通配符表达式,用于限制请求。


<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 test


PUT test/_settings
{
  "blocks.metadata": true
}
如下的所有操作都会报错:

GET  test
GET  test/_settings
GET  test/_mapping

PUT 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提供的各种索引阻塞设置,可以有效管理对索引的访问,保障数据完整性,高效利用资源,并加强数据的安全性。正确使用这些强大的工具需要深入理解它们的作用和应用场景。

购买链接:点击购买

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++干货基地】面向对象核心概念与实践原理:拷贝构造函数的全面解读

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

Learn OpenGL 07 摄像机

定义摄像机参数 glm::vec3 cameraPos glm::vec3(0.0f, 0.0f, 3.0f);//摄像机位置glm::vec3 cameraTarget glm::vec3(0.0f, 0.0f, 0.0f);glm::vec3 cameraDirection glm::normalize(cameraPos - cameraTarget);//摄像机方向&#xff0c;指向z轴正方向 glm::vec3 up glm::vec…

套接字编程 --- 三

目录 1. 前置性知识 1.1. listen 系统调用 1.2. accept 系统调用 1.3. 如何通信 1.3.1. read 系统调用 && write系统调用 1.3.2. recv 系统调用 && send 系统调用 2. TCP --- demo 2.1. Tcp_Server.hpp (version 1) 2.2. Tcp_Server.hpp (version 2…

[AIGC] Kafka解析:分区、消费者组与消费者的关系

Apache Kafka是一个分布式事件流平台&#xff0c;它是处理实时数据的强大工具。而理解Kafka的关键概念&#xff1a;分区&#xff08;Partition&#xff09;、消费者组&#xff08;Consumer Group&#xff09;和消费者&#xff08;Consumer&#xff09;的关系对于正确地使用Kafk…

C语言--- 指针运算笔试题详解

目录 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; 题目1&#xff1a; #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);print…

C#与WPF通用类库

个人集成封装&#xff0c;仓库已公开 NetHelper 集成了一些常用的方法&#xff1b; 如通用的缓存静态操作类、常用的Wpf的ValueConverters、内置的委托类型、通用的反射加载dll操作类、Wpf的ViewModel、Command、Navigation、Messenger、部分常用UserControls(可绑定的Passwo…

蓝桥杯-ISBN号码

此题然让本人纠结了很久&#xff0c;真的好多坑。。。。果然还是太菜了。 完整代码以及思路解析(在注释中) #include <iostream> using namespace std; int main() {string num;cin>>num; int count0;int w1;for(int i0;i<10;i){if((i!1)&&(i!5)) //坑…

Node.js作用

Node.js可以开发应用 开发服务器应用 开发工具类应用 开发桌面端应用

Discord OAuth2授权以及机器人监听群事件

下面文章讲解获取OAuth2授权整个流程&#xff0c;创建机器人&#xff0c;使用机器人监听工会&#xff08;工会就是创建的服务器&#xff09;成员变化等等&#xff0c;对接国外的都是需要VPN的哦&#xff0c;对接的时候记得提前准备。 创建应用 点击 此页面添加应用,&#xff…

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测 目录 EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GCN基于图卷积神经网络的数据分类预测 Matlab2023 2.多输入单输出的分类预测&#xf…

汽车电子:均胜电子、德赛西威“跑出”第二增长曲线

问界新M7上市以来销量势如破竹&#xff0c;华为汽车及相关均胜电子、联创电子、光峰科技等供应链企业也因此受益。 网络公开数据&#xff0c;在2024年1月1日-2月18日&#xff0c;中国市场新势力品牌销量排行榜中&#xff0c;问界就以4.25万辆的销量成绩霸榜第一&#xff0c;作…

幻兽帕鲁Palworld服务器搭建费用,仅需26元!

2024阿里云幻兽帕鲁专用服务器价格表&#xff1a;4核16G幻兽帕鲁专用服务器26元一个月、149元半年&#xff0c;默认10M公网带宽&#xff0c;8核32G幻兽帕鲁服务器10M带宽价格90元1个月、271元3个月。阿里云提供的Palworld服务器是ECS经济型e实例&#xff0c;CPU采用Intel Xeon …

政务网站安全合规之道,云监测提供优质监测解决方案

近年来&#xff0c;国家对于网站安全风险的问题重视程度不断提升&#xff0c;持续加强对网站安全的监管力度。特别是政务网站&#xff0c;承载着越来越重要的核心应用和数据&#xff0c;与普通网站相比更容易遭到来自互联网的攻击。 攻击者为了破坏政务形象、干扰政务工作秩序或…

RC4算法:流密码算法的经典之作

title: RC4算法&#xff1a;流密码算法的经典之作 date: 2024/3/11 18:16:16 updated: 2024/3/11 18:16:16 tags: RC4起源演变算法优劣分析RC4 vs AES安全性RC4 vs DES性能比较应用场景介绍工作原理详解代码实例演示 一、RC4算法的起源与演变 RC4算法是由著名密码学家Ron Riv…

Oracle数据库迁移至达梦8数据库(windows图文讲解)

写作不易&#xff0c;如果对各位有用请给个赞支持一下~ 1.第一步安装达梦8数据库&#xff1a; 下载安装看我这篇博客 https://blog.csdn.net/li836779537/article/details/136641411?spm1001.2014.3001.5502 2.废话不多说直接开干&#xff0c;安装完成后打开迁移工具 名字…

指令微调(Instructional Fine-tuning)

定义 指令微调&#xff08;Instructional Fine-tuning&#xff09;是一种自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;特别是在大型预训练语言模型&#xff08;如 GPT、BERT 等&#xff09;的应用中。在指令微调中&#xff0c;模型被进一步训练以更好地理解和遵循…

Linux--ELK 日志分析系统

ELK &#xff08;Elasticsearch、Logstash、Kibana&#xff09;日志分析系统的好处是可以集中查看所有服务器日志&#xff0c;减轻了工作量&#xff0c;从安全性的角度来看&#xff0c;这种集中日志管理可以有效查询以及跟踪服务器被攻击的行为。 > Elasticsearch 是个开源分…

容器安全是什么?

容器安全定义 容器安全是指保护容器的完整性。这包括从其保管的应用到其所依赖的基础架构等全部内容。容器安全需要完整且持续。通常而言&#xff0c;企业拥有持续的容器安全涵盖两方面&#xff1a; 保护容器流水线和应用保护容器部署环境和基础架构 如何将安全内置于容器流…

[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错

[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错 bug现象描述 版本&#xff1a;2.0.4&#xff08;客户端和服务端都是&#xff09; 环境&#xff1a;私有云环境&#xff0c;只有少量跳板机器可以访问公网&#xff0c;其他机器均通过配置代理方式访问公网 bug现…

CSS中grid网格布局详解

文章目录 一、是什么二、属性display 属性grid-template-columns 属性&#xff0c;grid-template-rows 属性grid-row-gap 属性&#xff0c; grid-column-gap 属性&#xff0c; grid-gap 属性grid-template-areas 属性grid-auto-flow 属性justify-items 属性&#xff0c; align-…