Elasticsearch配置详解

本文详细解析Elasticsearch的三大配置文件:elasticsearch.yml、jvm.options和log4j2.properties。涵盖集群名称、节点角色、日志策略、JVM参数等关键设置,助你深入了解和优化Elasticsearch配置。
摘要由CSDN通过智能技术生成

Elasticsearch有三个配置文件,分别是elasticsearch.yml、jvm.options和log4j2.properties.分别用来配置elasticsearch,elasticsearch的jvm和日志。如果安装时选择的是压缩包,那么一般这三个文件都保存在elasticsearch的文件夹中;如果是win安装包安装的,配置文件在c盘的ProgramData下,而不是ProgramFile。如果是linux通过安装工具安装的,例如apt-get,那么配置文件很可能在/etc/elasticsearch文件夹下;当然也可以通过更改环境变量ES_PATH_CONF更改配置文件位置。

一点小知识:

  • elasticsearch配置文件都是yaml格式的,所以在配置的时候注意格式;
  • 在配置文件中例如${HOSTNAME}表示使用环境变量HOSTNAME;
  • 有些配置我们并不想写在配置文件中,而是想启动的时候根据情况再指定,则可以使用${prompt.text} 或 ${prompt.secret}指定某个配置项,这样在启动的时候就需要手动输入。
    下面一个一个来解析配置文件。

elasticsearch.yml文件

示例配置内容如下:

bootstrap.memory_lock: false
cluster.name: elasticsearch
http.port: 9200
network.host: 127.0.0.1
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
node.name: WNT123
path.data: C:\ProgramData\Elastic\Elasticsearch\data
path.logs: C:\ProgramData\Elastic\Elasticsearch\logs
transport.tcp.port: 9300
reindex.remote.whitelist: 127.0.0.2:9200
  • bootstrap.memory_lock: false: JVM的内存能swap到磁盘,不能则需要配置为true
  • cluster.name: elasticsearch : 集群名称
  • node.data: 表示节点是否存储数据
  • node.master: 表示节点是否具有成为主节点的资格
  • node.ingest: 节点是否具有预处理能力
  • node.max_local_storage_nodes:同一安装路径最多可以启动的节点
  • node.name: 节点名称
  • path.data, path.logs: 数据文件和日志文件存放地址
  • transport.tcp.port:节点通信的端口
  • reindex.remote.whitelist:远程重建索引时的ip白名单

log4j2.properties日志配置文件

日志文件配置项较多,就挑一些重要的看一下。
elasticsearch的日志文件命名格式是这样的,如果你的配置项path.log的配置为C:\ProgramData\Elastic\Elasticsearch\logs,集群名称cluster.name是elasticsearch。那么你的日志一般就是长成C:\ProgramData\Elastic\Elasticsearch\logs\elasticsearch.log这个样子了。

  • appender.rolling.fileName = s y s : e s . l o g s . b a s e p a t h {sys:es.logs.base_path} sys:es.logs.basepath{sys:file.separator}${sys:es.logs.cluster_name}.log 日志文件命名规则
  • appender.rolling.filePattern = s y s : e s . l o g s . b a s e p a t h {sys:es.logs.base_path} sys:es.logs.basepath{sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz 日志过大时,会压缩,这是压缩日志文件的格式
  • appender.rolling.policies.time.type = TimeBasedTriggeringPolicy 使用基于时间的滚动策略
  • appender.rolling.policies.time.interval = 1 滚动日志为一天一次
  • appender.rolling.policies.time.modulate = true 每个自然日滚动,而不是24小时滚动
  • appender.rolling.policies.size.type = SizeBasedTriggeringPolicy 使用基于大小的滚动策略,就是说日志文件大概长这样子xxx-2019-01-01-1.log当本日的文件超过一定大小时,就会启动这一规则进行滚动
  • appender.rolling.policies.size.size = 256MB 按大小滚动时的日志大小上限
  • appender.rolling.strategy.action.type = Delete 滚动日志时使用删除操作(删除)
  • appender.rolling.strategy.action.condition.type = IfFileName 仅删除与文件模式匹配的日志
  • appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB 当日志文件大小达到2G时,启用压缩
    如果想保留一定时间段之内的日志文件,可以这样配置:
  • appender.rolling.strategy.type = DefaultRolloverStrategy
  • appender.rolling.strategy.action.type = Delete 不在这个时间段的删除
  • appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
  • appender.rolling.strategy.action.condition.type = IfFileName
  • appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
  • appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified
  • appender.rolling.strategy.action.condition.nested_condition.age = 7D 默认保留7天之内

另外,elasticsearch为了照顾到需要升级es的操作,可以配置logger.deprecation有关配置项,这样那些已经准备弃用的操作日志就会被打印出来,十分方便。

配置elasticsearch jvm

jvm配置就是配置java虚拟机,语法是通用的jvm配置语法。
-Xmx2g表示这个配置项是所有版本通用
2:-Xmx2g表示当jvm版本等于2时,此配置项才有效
2-:-Xmx2g表示当jvm版本大于等于2时配置项才有效
2-6:-Xmx2g表示当jvm版本在2和6之间时才有效
-6:-Xmx2g表示当jvm版本小于等于6时才有效

一般来说我们也不怎么需要改jvm的配置,安装好只好配置项如下所示:

# 自己加个注释
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError
-Xmx2048m
-Xms2048m
  • -XX:+UseConcMarkSweepGC:设置年老代为并发收集。配置这个以后,-XX:NewRatio=4的配置失效了。所以,此时年轻代大小最好用-Xmn设置
  • XX:CMSInitiatingOccupancyFraction=75:表示年老代空间到70%时就开始执行CMS,确保年老代有足够的空间接纳来自年轻代的对象
  • XX:+UseCMSInitiatingOccupancyOnly:使用手动定义初始化定义开始CMS收集,禁止hostspot自行触发CMS GC
  • XX:+AlwaysPreTouch:JVM就会先访问所有分配给它的内存,让操作系统把内存真正的分配给JVM.后续JVM就可以顺畅的访问内存了
  • -server:server模式运行
  • Xss1m:每个线程的堆栈大小1m
  • Djava.awt.headless=true:对于一个Java服务器来说经常要处理一些图形元素,这些API基本上总是需要运行一个X-server以便能使用AWT。然而,运行一个不必要的X-server并不是一种好的网络管理方式。开启此配置可以禁用X-server
  • Dfile.encoding=UTF-8:编码为utf8编码
  • Djna.nosys=true:始终使用提供的JNA与系统之一
  • Dio.netty.noUnsafe=true:使用Heap堆内存创建ByteBuf
  • Dio.netty.noKeySetOptimization=true:没有密钥集
  • Dio.netty.recycler.maxCapacityPerThread: netty回收配置,每个线程最大容量
  • Dlog4j.shutdownHookEnabled:log4j配置,是否允许关闭hook
  • Dlog4j2.disable.jmx: 是否禁用jmx
  • Dlog4j.skipJansi: ConsoleAppender不会尝试在Windows上使用Jansi输出流
  • XX:+HeapDumpOnOutOfMemoryError: 输出Heap Dump到指定文件
  • Xmx: 初始堆大小
  • Xmx: 最大堆大小 基本上这个配置也就修改一下堆大小,其他配置一般不需要修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值