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

Elasticsearch核心配置详解与优化

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  # 单个日志文件上限

重要补充配置

  1. 操作系统级优化:

    • 增大文件描述符限制(/etc/security/limits.conf
    • 禁用交换分区(sudo swapoff -a
    • 调整虚拟内存映射(sysctl -w vm.max_map_count=262144
  2. 集群动态设置 (通过API):

    PUT /_cluster/settings
    {"persistent": {"indices.breaker.fielddata.limit": "60%"  # 字段数据熔断器}
    }
    

配置最佳实践

  1. 集群名称唯一性:避免不同集群意外加入。
  2. 绑定真实IPnetwork.host 勿用 0.0.0.0(生产环境)。
  3. JVM内存固定-Xms-Xmx 必须相同。
  4. 分离节点角色:大集群中区分 Master/Data/Ingest 节点。
  5. 定期备份配置:使用 Ansible/Puppet 等工具管理配置版本。

📌 注意:修改配置后需重启节点(部分动态设置可通过API调整)。
详细配置参考官方文档:Elasticsearch Configuration

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

相关文章:

  • 【Linux】Docker洞察:掌握docker inspect命令与Go模板技巧
  • 免费开源图片压缩工具|绿色版本地运行,支持批量压缩+格式转换,不上传数据,隐私安全有保障!
  • 毕业项目推荐:27-基于yolov8/yolov5/yolo11的电塔缺陷检测识别系统(Python+卷积神经网络)
  • 软件测试工程师面试题(含答案)
  • 重写BeanFactory初始化方法并行加载Bean
  • 6年前抄写的某品牌集成灶-蒸汽炉
  • Linux笔记10——shell编程基础-4
  • GraphRAG——v0.3.6版本使用详细教程、GraphRAG数据写入Neo4j图数据库、GraphRAG与Dify集成
  • 图像增强和评价
  • 脑电分析——学习笔记
  • 【系统架构设计(一)】系统工程与信息系统基础上:系统工程基础概念
  • 【Ubuntu系统实战】一站式部署与管理MySQL、MongoDB、Redis三大数据库
  • 负载均衡之平滑加权轮询(Smooth Weighted Round Robin)详解与实现
  • MIME类型与文件上传漏洞 - 网络安全视角
  • AI解决生活小事系列——用AI给我的电脑做一次“深度体检”
  • Windows下的异步IO通知模型
  • 一款基于 .NET 开源、功能强大的 Windows 搜索工具
  • C# .NET支持多线程并发的压缩组件
  • 2026 济南玉米深加工展:探索淀粉技术突破与可持续发展解决方案
  • 你真的了解操作系统吗?
  • Feign 调用为服务报 `HardCodedTarget(type=xxxClient, name=xxxfile, url=http://file)`异常
  • 大模型入门实战 | 基于 YOLO 数据集微调 Qwen2.5-VL-3B-Instruct 的目标检测任务
  • YggJS RButton 按钮组件 v1.0.0 使用教程
  • 【vue eslint】报错:Component name “xxxx“ should always be multi-word
  • 云上“安全管家”|移动云以云安全中心为企业数字化升级保驾护航
  • 科技信息差(8.26)
  • 【软考论文】论静态测试方法及其应用
  • PortSwigger靶场之Blind SQL injection with out-of-band interaction通关秘籍
  • 软考-系统架构设计师 计算机系统基础知识详细讲解
  • 【46页PPT】AI智能中台用ABC+IOT重新定义制造(附下载方式)