【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

```

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

```json

PUT /my_index

{

"settings": {

"number_of_shards": 3

}

}

```

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

  • 这个 `2` 就是 fallback 值。


✅ 一句话总结

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

相关推荐
Elastic 中国社区官方博客1 天前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
身如柳絮随风扬1 天前
深度解析 Elasticsearch 搜索服务:核心原理、架构与优化实践
大数据·elasticsearch·架构
kft13141 天前
AI 驱动测试 2.0:当测试智能体成为你的“超级 QA“
大数据·人工智能·elasticsearch
Elastic 中国社区官方博客2 天前
在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·可用性测试
逸Y 仙X2 天前
文章十六:ElasticSearch 使用enrich策略实现大宽表
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
Elasticsearch2 天前
用于 JavaScript 和 TypeScript 的 ES|QL 查询构建器:流式、类型安全的查询构建
elasticsearch
Elasticsearch2 天前
警报之后:重新思考我们如何调查金融犯罪
elasticsearch
Elasticsearch2 天前
Elastic 和 Cursor 合作 加速 上下文工程 与 coding agents
elasticsearch
Volunteer Technology2 天前
ES高级搜索功能
android·大数据·elasticsearch
Elastic 中国社区官方博客2 天前
通过 Elastic MCP Server 将 Cursor 连接到生产日志
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·mcp