当前位置: 首页 > news >正文

说说es配置项的动态静态之分和集群配置更新API

这天因为某件工作来到了es官网某个参数配置相关的页面,注意到了下图圆圈里的“Dynamic”:

链接:https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-cluster.html#misc-cluster-settings

显然这是对配置项的一个描述,点击链接,就能了解到集群/节点的配置分为动态和静态:

页面上的内容很好懂,链接在这里:
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/settings.html#cluster-setting-types,然后我这里还是自己看懂多少写多少了,随意一点。

dynamic settings,动态配置项,就是可以通过cluster update settings API(集群设置更新API)、在运行着的集群上做修改的那些配置项;这些配置项也可以在集群未打开或关闭的状态下通过elasticsearch.yml来配置。

通过cluster update settings API更新的配置项,
可以是永久的(persistent),也可以是临时的(transient)。
永久的会在集群重启后仍然有效;临时的在集群下次重启后即失效;
还可以用给null的方式调用cluster update settings API来重置永久/临时配置项;

这是8.1版本的文档,页面上面说到已经不再推荐使用临时配置项了,因为如果集群不够稳定,临时配置项就会失效,这经常导致一个“用户实际上并没有得到自己想要的集群”这样的状态;文档上还给了临时配置项的迁移指引。

如果实际操作中通过不同的方式修改了同一个配置项,那么es按这个优先级生效:
1. 临时配置
2. 永久配置
3. 配置文件elasticsearch.yml
4. 默认值

这里页面上给出了一些建议:
如果使用Elasticsearch Service,使用user settings特性来配置集群,这样Elasticsearch Service会自动拒绝不安全的配置操作;
如果是从本地硬件上运行Elasticsearch,那么建议使用cluster update settings API来配置动态配置项,配置文件elasticsearch.yml只用来管理集群/节点的静态配置项,
因为API不需要重启,并且保证所有节点上的配置一致。

static settings就是那些只能在集群还没启动或者已经关闭时,通过elasticsearch.yml来配置的项,必须在集群的每一个节点上都做配置。

好了,现在看看这个cluster update settings API怎么用。页面在这里:

链接是这:
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/cluster-update-settings.html

【先说如何查询得事情】

页面上没说如何查询,问了下deepseek,试试这样:
curl -k -XGET  -H "Content-Type: application/json" \
"https://localhost:9200/_cluster/settings?include_defaults=true&flat_settings=true&pretty"

这是把所有的配置都打出来了啊,读起来不友好,假设想要看"cluster.max_shards_per_node"是个什么值,加上-s,还有grep试试:

curl -s -k -XGET  -H "Content-Type: application/json" \
"https://localhost:9200/_cluster/settings?include_defaults=true&flat_settings=true&pretty" | grep "cluster.max_shards_per_node"

这效果可以,虽然这个查询方式无法直观得显示是个永久配置or临时配置or系统默认值,但这个不难,先继续。

上边命令里的“include_defaults=true&flat_settings=true”意味着什么,页面上也说了:

【如何更新某个配置项】

还是以cluster.max_shards_per_node为例吧,假设要永久得改为2000:
curl -s -k -XPUT https://localhost:9200/_cluster/settings?flat_settings=true&pretty" \
-H 'Content-Type: application/json' -d' \
{
    "persistent" : {
           "cluster.max_shards_per_node" : 2000
    }
}'

查一下看看,生效了:

不打印默认值看看,很稳:
curl -s -k -XGET   -H "Content-Type: application/json" \
"https://localhost:9200/_cluster/settings?flat_settings=true&pretty"

欧。

相关文章:

  • JAVA中ArrayList的解析
  • C语言初阶:数组
  • Webug4.0靶场通关笔记20- 第25关越权查看admin
  • Webug4.0靶场通关笔记19- 第24关邮箱轰炸
  • 限流算法学习笔记(一)Go Rate Limiter
  • 数据实验分析
  • RabbitMQ-springboot开发-应用通信
  • 精益数据分析(48/126):UGC商业模式的指标剖析与运营策略
  • JVM中类加载过程是什么?
  • node.js 实战——餐厅静态主页编写(express+node+ejs+bootstrap)
  • css识别\n换行
  • 安卓工程build.gradle中的Groovy的常见知识点
  • 【神经网络与深度学习】VAE 中的先验分布指的是什么
  • “胖都来”商标申请可以通过注册不!
  • Eclipse通过Tomcat启动web项目报错
  • 使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结
  • 基于 ISO 22301 与国产化实践的 BCM 系统菜单设计指南
  • 【疑难杂症2025-003】Java-mvn项目在gitlab-ci构建镜像时遇到的问题和解决方案
  • ✍️【TS类型体操进阶】挑战类型极限,成为类型魔法师![特殊字符]♂️✨
  • EDU/EDU.CN教育邮箱的申请(申请成功可以免费使用一年CursorPro)
  • 华泰柏瑞基金总经理韩勇因工作调整卸任,董事长贾波代为履职
  • 墨西哥宣布就“墨西哥湾”更名一事起诉谷歌
  • 美英达成贸易协议,美股集体收涨
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体
  • 光大华夏:近代中国私立大学遥不可及的梦想
  • 宁合两大都市圈交汇之城含山:要想身体好,常往含山跑