配置说明
1 配置文件位置
Elasticsearch的主要配置文件
# 主配置文件
$ES_HOME/config/elasticsearch.yml    # 节点配置
$ES_HOME/config/jvm.options           # JVM配置
$ES_HOME/config/log4j2.properties     # 日志配置

# 系统配置(Linux)
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties

# 数据目录
/var/lib/elasticsearch

# 日志目录
/var/log/elasticsearch
2 核心配置项
elasticsearch.yml 常用配置
# ======================== Elasticsearch Configuration =========================

# 集群名称
cluster.name: my-application

# 节点名称
node.name: node-1

# 数据和日志路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

# 网络绑定
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300

# 发现设置
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

# 内存锁定(防止交换)
bootstrap.memory_lock: true

# 安全设置
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
3 JVM配置
jvm.options 内存和性能优化
# 堆内存设置(建议不超过物理内存的50%,且不超过32GB)
-Xms4g
-Xmx4g

# GC配置
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

# GC日志
-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m

# 其他优化
-XX:+AlwaysPreTouch
-XX:+DisableExplicitGC
-XX:+ParallelRefProcEnabled
-XX:+UseStringDeduplication
内存建议
  • 开发环境:512MB - 1GB
  • 测试环境:2GB - 4GB
  • 生产环境:8GB - 32GB(建议)
  • 不要超过物理内存的50%
  • 不要超过32GB(压缩指针优化)
4 系统参数配置
Linux系统级别的优化配置
# /etc/sysctl.conf
# 虚拟内存映射数量
vm.max_map_count = 262144

# /etc/security/limits.conf
# 文件描述符限制
elasticsearch soft nofile 65535
elasticsearch hard nofile 65535

# 进程数限制
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096

# 内存锁定
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

# 应用配置
sysctl -p
ulimit -n 65535
5 常用配置项说明
配置项 说明 默认值
cluster.name 集群名称,相同名称的节点组成集群 elasticsearch
node.name 节点名称 主机名
node.roles 节点角色 [master, data, ingest] 所有角色
network.host 绑定地址 localhost
http.port HTTP端口 9200
discovery.seed_hosts 发现种子主机列表 []
cluster.initial_master_nodes 初始主节点列表 []
path.data 数据存储路径 $ES_HOME/data
path.logs 日志存储路径 $ES_HOME/logs
注意事项
  • 修改配置后需要重启Elasticsearch服务
  • 集群配置需要所有节点保持一致
  • 生产环境建议禁用动态脚本执行
  • 定期检查和清理日志文件