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

【Elasticsearch】settings

通过settings或者yml文件写入的配置是不是最终都会写到settings对象中呢?

是的,最终都会汇总到 `Settings` 对象里,但来源不同、优先级不同、作用范围也不同。可以用一句话总结:

> “yml 文件只是初始来源之一,运行时所有配置最终都会归一到 Settings 对象,但 Settings 对象是分层的,不同层之间可以覆盖。”

---

🔍 1. 配置来源与层次

来源 写入目标 作用范围 备注 

`elasticsearch.yml` 节点级的 `Settings` 整个节点 启动时只读一次 

命令行参数 `-E` 同上 同上 优先级高于 yml 

索引创建时的 settings 该索引专属的 `Settings` 仅该索引 通过 `PUT /index/_settings` 可修改 

集群级动态设置 集群状态的 `Settings` 整个集群 通过 `PUT _cluster/settings` 写入 

---

🔍 2. 最终归一:Settings 对象

- 节点启动时,`Environment` 会把 `elasticsearch.yml`、CLI 参数、jvm.options 等解析成一个全局的 `Settings` 实例。

- 索引创建时,会再创建一个 索引级别的 `Settings`,它会把全局配置作为 fallback,然后再把索引自己的 settings 覆盖进去。

- 运行时,通过 `ClusterService.state().metadata().index("idx").getSettings()` 拿到的是索引级 Settings;通过 `Node.NODE_SETTINGS` 拿到的是节点级 Settings。

---

✅ 举个例子

假设你在 `elasticsearch.yml` 里写了:

```yaml

index.number_of_shards: 3

```

- 启动后,节点级 `Settings` 里会有 `index.number_of_shards: 3`。

- 当你创建索引 `PUT /my_index` 时,如果没有显式指定 `number_of_shards`,就会用到这个全局默认值。

- 如果你在创建索引时写了:

```json

  PUT /my_index

  {

    "settings": {

      "number_of_shards": 5

    }

  }

  ```

  那么最终该索引的 `Settings` 对象里就是 `5`,覆盖了全局的 `3`。

---

✅ 总结一句话

> 所有配置最终都会落到某个 `Settings` 对象里,但不同层级之间可以相互覆盖:索引级 > 集群动态 > 节点级(yml)。

“fallback” 就是兜底值、备胎值的意思。

 

在 Elasticsearch 的 `Settings` 体系里:

 

> 如果当前层(索引、集群、节点)没有显式配置某个键,就会自动去上一层找这个键的值拿来用,这个“上一层”的值就是 fallback。

 

---

 

✅ 举个例子

 

1. 节点级 yml 配置了:

 

```yaml

index.number_of_replicas: 2

```

 

2. 你创建索引时 没写 `number_of_replicas`:

 

```json

PUT /my_index

{

  "settings": {

    "number_of_shards": 3

  }

}

```

 

- 此时 `my_index` 的 `number_of_replicas` 会自动取节点级的 `2`。

- 这个 `2` 就是 fallback 值。

 

---

 

✅ 一句话总结

 

> fallback 就是“如果我没配,就用上级默认值”。

http://www.xdnf.cn/news/15945.html

相关文章:

  • 【图论】CF——B. Chamber of Secrets (0-1BFS)
  • 讯飞输入法3.0.1742功能简介
  • node.js 为什么要装 express组件
  • DevCon 6记录
  • 数据库和数据仓库的区别
  • 轮状太空城的科学依据浅谈
  • ROS 与 Ubuntu 版本的对应关系
  • 热室机械手市场报告:智能装备推动高温制造自动化升级
  • 文远知行推出与联想共研的100%车规级HPC 3.0计算平台
  • 图立得-html纯前端图片拾色器V202507
  • [论文阅读] 人工智能 | ZipMPC:让短视的MPC拥有长远眼光——通过模仿学习压缩长 horizon 智慧
  • Pandas - JSON格式数据操作实践
  • 深入详解随机森林在医学图像质量评估中的应用与实现细节
  • git_guide
  • 关于JVM
  • 开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机
  • QT6 源,七章对话框与多窗体(6) 颜色对话框 QColorDialog :本类的属性,信号函数,静态成员函数,以及源代码
  • “hidden act“:“gelu“在bert中作用
  • Tomcat的部署、单体架构、session会话、spring
  • LeetCode|Day21|204. 计数质数|Python刷题笔记
  • DelayQueue延迟队列的使用
  • 分布式定时任务系列13:死循环是任务触发的银弹?
  • Jmeter如何做接口测试?
  • 基于 STM32 的数字闹钟系统 Proteus 仿真设计与实现
  • JavaWeb笔记四
  • 【VASP】VASP 机器学习力场(MLFF)实战
  • 超越基于角色的手术领域建模:手术室中的可泛化再识别|文献速递-医学影像算法文献分享
  • 神经网络——非线性激活
  • 深入解析 SymPy 中的符号计算:导数与变量替换的实践指南
  • 【设计模式】观察者模式 (发布-订阅模式,模型-视图模式,源-监听器模式,从属者模式)