Elasticsearch 的核心配置文件主要用于控制节点行为、集群设置、资源分配和日志记录等关键功能。主要配置文件通常位于 ES_HOME/config
目录下,以下是三个最核心的配置文件及其详细说明:
1. elasticsearch.yml
核心集群与节点配置
这是最重要的配置文件,包含集群拓扑、网络、存储、安全等全局设置。
关键配置项:
基础设置:
cluster.name: my-elastic-cluster # 集群名称(同一集群所有节点需一致) node.name: node-1 # 当前节点名称(建议唯一)
节点角色设置 (ES 7.9+):
node.roles: [ data, master ] # 节点角色:data(数据节点), master(主节点), ingest(预处理节点) # 生产环境建议分离 master 和 data 角色
网络与通信:
network.host: 192.168.1.10 # 绑定IP(默认localhost,生产需改为实际IP) http.port: 9200 # REST API 端口 transport.port: 9300 # 节点间通信端口 discovery.seed_hosts: ["host1", "host2"] # 集群种子节点列表 cluster.initial_master_nodes: ["node-1", "node-2"] # 初始主节点(首次启动时指定)
存储路径:
path.data: /var/data/elasticsearch # 数据存储目录(可配置多个路径) path.logs: /var/log/elasticsearch # 日志目录
安全配置 (X-Pack):
xpack.security.enabled: true # 启用基础安全(用户名/密码) xpack.security.transport.ssl.enabled: true # 节点间通信加密
内存保护 (防止OOM):
bootstrap.memory_lock: true # 锁定内存(避免交换分区影响性能)
2. jvm.options
JVM 堆内存与垃圾回收配置
控制 Elasticsearch 进程的内存使用和GC策略。
关键配置:
堆内存大小:
-Xms4g # 初始堆内存(建议设为与最大值相同) -Xmx4g # 最大堆内存(不超过物理内存的50%,且不超过30GB)
建议: 生产环境推荐 16-30GB,避免过大引发长GC停顿。
垃圾回收器:
-XX:+UseG1GC # Java 8+ 默认推荐 -XX:MaxGCPauseMillis=500 # 目标GC停顿时间
其他优化:
-Des.index.memory.max_bytes=32gb # 控制索引内存上限
3. log4j2.properties
日志记录配置
控制日志级别、滚动策略和输出格式。
常用配置:
# 日志级别(ERROR, WARN, INFO, DEBUG)
logger.cluster.name = org.elasticsearch.cluster
logger.cluster.level = info
# 日志滚动策略(按日期/大小分割)
appender.rolling.type = RollingFile
appender.rolling.filePattern = ${sys:es.logs.base_path}/${sys:es.logs.cluster_name}_%d{yyyy-MM-dd}.log
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 256MB # 单个日志文件上限
重要补充配置
操作系统级优化:
- 增大文件描述符限制(
/etc/security/limits.conf
) - 禁用交换分区(
sudo swapoff -a
) - 调整虚拟内存映射(
sysctl -w vm.max_map_count=262144
)
- 增大文件描述符限制(
集群动态设置 (通过API):
PUT /_cluster/settings { "persistent": { "indices.breaker.fielddata.limit": "60%" # 字段数据熔断器 } }
配置最佳实践
- 集群名称唯一性:避免不同集群意外加入。
- 绑定真实IP:
network.host
勿用0.0.0.0
(生产环境)。 - JVM内存固定:
-Xms
和-Xmx
必须相同。 - 分离节点角色:大集群中区分 Master/Data/Ingest 节点。
- 定期备份配置:使用 Ansible/Puppet 等工具管理配置版本。
📌 注意:修改配置后需重启节点(部分动态设置可通过API调整)。
详细配置参考官方文档:Elasticsearch Configuration