Elasticsearch 自管理集群配置指南

Elasticsearch 自管理集群配置指南

一、概述

Elasticsearch 内置了优化的默认配置,开箱后仅需极少配置即可使用。绝大多数设置项,都可以在集群运行期间通过集群更新设置 API 进行修改。

配置文件中,应仅存放节点专属配置(如节点名称 node.name、文件路径配置),以及节点加入集群必需的核心配置(如集群名称 cluster.name、网络主机地址 network.host)。

注意

本文仅说明自管理 Elasticsearch 集群的配置方法,其他部署类型需通过不同步骤完成配置。

  • 如需了解其他部署类型下 elasticsearch.yml 的配置方式,可参考 Elastic Stack 配置设置文档;

  • JVM 与 log4j 配置并非在所有部署类型中都支持开放配置。如需了解在 Kubernetes 上的 Elastic Cloud 中如何配置受限的 JVM 参数,可参考计算资源管理文档。

二、可用配置项参考

  • 如需查看 Elasticsearch 集群支持的全量配置项清单,可参考 Elasticsearch 配置参考文档;

  • 如需了解生产环境集群上线前必须完成的核心配置项,可参考关键配置项文档。

三、配置文件说明

Elasticsearch 包含三类核心配置文件,具体如下:

  1. elasticsearch.yml:Elasticsearch 核心功能配置文件

  2. jvm.options:Elasticsearch JVM 虚拟机参数配置文件

  3. log4j2.properties:Elasticsearch 日志行为配置文件

上述文件默认存放于配置目录(config 目录)中,其默认路径取决于你的安装方式:归档发行版(tar.gz/zip 包)或软件包发行版(Debian/RPM 包)。

3.1 归档发行版

归档发行版的配置目录,默认路径为 $ES_HOME/config

你可以通过 ES_PATH_CONF 环境变量修改配置目录路径,示例如下:

Bash 复制代码
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

此外,你也可以通过命令行,或 Shell 配置文件(profile)导出 ES_PATH_CONF 环境变量,完成路径配置。

3.2 软件包发行版

软件包发行版的配置目录,默认路径为 /etc/elasticsearch

你同样可以通过设置 ES_PATH_CONF 环境变量修改配置目录路径,但仅在 Shell 中设置环境变量无法生效,该变量需从以下对应文件中加载读取:

  • Debian 系统:/etc/default/elasticsearch

  • RPM 系统:/etc/sysconfig/elasticsearch

你需要编辑对应系统文件中的 ES_PATH_CONF=/etc/elasticsearch 配置项,修改后即可生效。

3.3 配置文件格式规范

elasticsearch.yml 采用 YAML 格式编写,以下为修改数据与日志目录路径的配置示例:

YAML 复制代码
path:
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch

配置项也支持扁平化写法,示例如下:

YAML 复制代码
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

在 YAML 语法中,非标量值支持以序列格式编写,示例如下:

YAML 复制代码
discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11
   - seeds.mydomain.com

非标量值也支持以数组格式编写(使用频率较低),示例如下:

YAML 复制代码
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]

3.4 环境变量替换规则

elasticsearch.yml 配置文件中,使用 ${...} 语法引用的环境变量,会在服务启动时自动替换为对应环境变量的实际值,示例如下:

YAML 复制代码
node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

环境变量的值必须为简单字符串;如需传入列表类型的配置值,可使用英文逗号分隔的字符串,组件会自动完成解析。例如通过以下命令设置环境变量,Elasticsearch 会自动将 ${HOSTNAME} 的值拆分为列表格式:

Bash 复制代码
export HOSTNAME="host1,host2"

默认情况下,若组件启动时,配置文件中引用的环境变量不存在,配置校验会直接失败。如需规避该问题,可使用 ${环境变量名:默认值} 语法为环境变量设置兜底默认值。

四、集群与节点设置类型

集群与节点设置,根据配置方式与生效规则,可分为以下两大类:

4.1 动态设置

动态设置支持两种配置方式:

  1. 在集群运行期间,通过集群更新设置 API 配置和更新;

  2. 在未启动或已关闭的节点上,通过本地 elasticsearch.yml 文件配置。

通过集群更新设置 API 执行的更新,可分为两种生效类型:

  • 持久化设置:配置永久生效,集群重启后仍会保留;

  • 临时设置:配置临时生效,集群重启后会自动重置。

你也可以通过 API 给临时/持久化设置赋值为 null,实现对应配置项的重置。

配置优先级规则

若你通过多种方式配置了同一个设置项,Elasticsearch 会按照以下优先级从高到低加载配置,高优先级配置会覆盖低优先级配置:

  1. 临时设置

  2. 持久化设置

  3. elasticsearch.yml 文件配置

  4. 配置项默认值

例如:你可以通过临时设置,覆盖已配置的持久化设置或 elasticsearch.yml 文件配置;但修改 elasticsearch.yml 文件配置,无法覆盖已定义的临时或持久化设置。

警告

我们不再推荐使用集群临时设置,建议改用集群持久化设置。当集群运行状态不稳定时,临时设置可能会意外清空,进而导致集群配置不符合预期,引发运行风险。

在自管理集群中,动态集群设置建议优先通过集群更新设置 API 配置elasticsearch.yml 仅用于配置静态集群设置和节点专属设置。API 配置无需重启节点,且能保证配置值在集群所有节点上完全一致。

4.2 静态设置

静态设置仅支持在未启动或已关闭的节点上,通过 elasticsearch.yml 文件配置,且必须在集群内所有相关节点上统一配置后才能生效。

五、更多配置主题指引

如需了解 Elasticsearch 核心配置任务的实操方法,可参考以下对应文档:

  • 安全配置:了解安全特性相关配置,防范恶意攻击者篡改数据,实现集群进出流量及内部通信的加密;

  • 集群与部署用户管理:完成集群的身份认证与权限授权配置,了解 Elasticsearch 用于内部及跨服务请求认证、授权的底层安全技术;

  • Elastic API 密钥:为程序访问部署实例与 Elasticsearch 资源,配置身份认证与权限授权;

  • 连接器:管理 Elastic 与第三方系统之间的连接信息;

  • 远程集群:开启 Elasticsearch 集群间通信,支撑跨集群复制与跨集群搜索能力;

  • Elasticsearch 节点扩缩容:了解如何添加/移除节点,调整集群的规模与处理能力;

  • 生产环境部署指南:参考相关最佳实践与指导建议,设计符合业务负载、安全策略与部署需求的生产环境。

相关推荐
MARS_AI_2 小时前
2026年大模型呼叫厂商深度盘点:8家核心玩家及选型指南
大数据·人工智能·自然语言处理·交互·信息与通信
海兰2 小时前
Elasticsearch 全文检索概述
elasticsearch·serverless·全文检索
YangYang9YangYan2 小时前
2026大专大数据与会计专业学习数据分析的价值分析
大数据·学习·数据分析
海兰2 小时前
Elasticsearch 搜索方案与技术栈深度解析
大数据·elasticsearch·django
良策金宝AI10 小时前
让端子排接线图“智能生成”,良策金宝AI推出变电站二次智能设计引擎
大数据·人工智能·工程设计·变电站ai
a2852811 小时前
nginx的重定向
大数据·数据库·nginx
yhdata12 小时前
锁定2032年!区熔硅单晶市场规模有望达71.51亿元,赛道前景持续向好
大数据·人工智能
ASKED_201913 小时前
企业级大模型微调(Fine-tuning)策略
大数据·人工智能·算法
琅琊榜首202013 小时前
AI+编程思维:高质量短剧脚本高效撰写实操指南
大数据·人工智能·深度学习