Elasticsearch 7.x常用配置文件介绍

Elasticsearch 有三个配置文件:

  • elasticsearch.yml: Elasticsearch 配置文件
  • jvm.options: Elasticsearch JVM 配置文件
  • log4j2.properties: Elasticsearch 日志配置文件

源码安装方式配置文件位于:安装目录/config目录下

RPM安装方式位于:/etc/elasticsearch目录下

下面介绍一下常用的配置项

elasticsearch.yml

下面是一些常用的配置项

# ---------------------------------- Cluster -----------------------------------
# 集群的名称,不同集群唯一
cluster.name: my-cluster

# 节点的名称,同一集群唯一
node.name: node-1

#设置为true(默认值)的节点,这使它有资格 被选为主 (master)节点,主节点可以控制集群
node.master: true

#设置为true(默认值)的节点。数据节点保存数据并执行与数据相关的操作,如 CRUD、搜索和聚合。
node.data: true


# ----------------------------------- Paths ------------------------------------
# 数据文件的存储路径,可以设置为多个路径,在这种情况下,所有路径都将用于存储数据(尽管属于单个分片的文件都将存储在同一数据路径上),主要要给ES用户权限
path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

# 日志文件的存储路径,启动日志和报错日志都在这个目录下
path.logs: /path/to/logs


# ---------------------------------- Network -----------------------------------
# 用于指定 Elasticsearch 监听的网络接口地址,默认127.0.0.1 即只允许本地访问,建议指定为具体IP或0.0.0.0
network.host: 0.0.0.0

# HTTP 通信使用的端口号(默认为 9200),需要开放防火墙端口
http.port: 9200

# 节点间通信使用的 TCP 端口号(默认为 9300),集群环境需要开放端口
transport.tcp.port: 9300


# --------------------------------- Discovery ----------------------------------
# 初始主机节点的主机名或 IP 地址,用于集群自动发现,一般为初始集群中node.master为true的节点
discovery.seed_hosts: [ "host1", "host2","ip3" ]

#用于指定集群第一次启动时的初始主节点列表,注意要使用节点的名称,比如node-1,一般为初始集群中node.master为true的节点
cluster.initial_master_nodes: [ "node-1", "node-2","node-3" ]

# ---------------------------------- Gateway -----------------------------------
# 节点数达到指定数量后,才开始恢复数据(默认为 3),在 7.7.0 中废弃,将在 8.0 中移除。你应该使用 gateway.recover_after_data_nodes 代替之
gateway.recover_after_nodes: 3

# 节点数达到指定数量后,才开始恢复数据
gateway.recover_after_data_nodes: 3


#[7.7.0] 在 7.7.0 中废弃,将在 8.0 中移除。 你应该使用 gateway.expected_data_nodes 代替之。预期在集群中的主节点的数量。一旦预期数量的主节点加入集群,本地分片的恢复就会开始。默认为 0。
gateway.expected_nodes: 3
# 预期在集群中的数据节点的数量。一旦预期数量的数据节点加入集群,本地分片的恢复就会开始。默认为 0。
gateway.expected_data_nodes: 3


# ---------------------------------- Memory ------------------------------------
# 是否锁定 Elasticsearch 进程的内存(需要设置文件系统权限)
bootstrap.memory_lock: true


# ---------------------------------- Various -----------------------------------
# 在执行危险操作(如删除索引)时,需要显式指定操作名称(默认为 true)
action.destructive_requires_name: true


# ---------------------------------- Security ----------------------------------
# 是否启用 X-Pack 安全功能(默认为 false),当将xpack.security.enabled设置为true时,Elasticsearch 将启用安全功能,包括身份验证、授权、加密通信等,用于启用或禁用 API 密钥身份验证方式
xpack.security.enabled: false

# 是否启用 API 密钥认证(默认为 false)
xpack.security.authc.api_key.enabled: false


# ---------------------------------- Logging ----------------------------------
# 日志级别设置(可选:trace, debug, info, warn, error, fatal),默认情况下,它的值是info
logger.org.elasticsearch.transport: debug

配置JVM内存

不建议修改jvm.options文件,建议使用自定的jvm配置文件,进入安装目录/config/jvm.options.d目录,

切换为es用户

vi jvm.custom.options

填入下面的内容,保存重启即可

-Xms3g
-Xmx3g

Elasticsearch 将根据 jvm.options 中设置的 Xms(最小堆大小) 和 Xmx(最大堆大小) 来分配整个堆。 你应该将这两个设置设置为彼此相等。

日志

Elasticsearch 使用 Log4j 2 进行日志记录。 Log4j 2 可以使用 log4j2.properties 文件进行配置。

es提供了3个属性,分别是:${sys:es.logs.base_path}, {sys:es.logs.cluster_name}和{sys:es.logs.node_name}。这几个属性可以在配置文件中使用,用来确定文件的路径。

  • ${sys:es.logs.base_path}为日志配置路径。
  • ${sys:es.logs.cluster_name}为集群名称。
  • ${sys:es.logs.node_name}为节点名称, 前提是在配置文件中设置过。

如果你的path.logs为/var/log/elasticsearch,你的集群名称为production,那么{sys:es.logs.base_path}会解析成/var/log/elasticsearch,{sys:es.logs.base_path}{sys:file.separator}{sys:es.logs.cluster_name}.log将被解析为/var/log/elasticsearch/production.log

日志模版示例:

######## Server JSON ############################
# 日志滚动类型为RollingFile
appender.rolling.type = RollingFile 
# 名称
appender.rolling.name = rolling
# 日志文件名为/var/log/elasticsearch/production.json
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json 
# 使用json布局
appender.rolling.layout.type = ESJsonLayout 
# 会在日志输出中有这个标识,如果有解析不同类型的日志时,可以用来区分。
appender.rolling.layout.type_name = server 
# 文件压缩之后的名称,%i表示构建的数量,是递增的
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz 

appender.rolling.policies.type = Policies
# 使用时间滚动策略
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy 
# 每天滚动
appender.rolling.policies.time.interval = 1 
# 以天为标准,输出日志文件
appender.rolling.policies.time.modulate = true 
# 基于大小滚动策略
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy 
# 日志滚动大小,当达到这个值时进行文件滚动
appender.rolling.policies.size.size = 256MB 
# 删除策略
appender.rolling.strategy.type = DefaultRolloverStrategy
# 
appender.rolling.strategy.fileIndex = nomax
# 使用删除类型
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 = IfAccumulatedFileSize 
# 压缩日志的大小条件是2 GB
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB 
################################################

如果你想保留一定时间的日志,那么可以使用滚动删除策略。

# 滚动删除策略
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 
相关推荐
Elastic 中国社区官方博客8 小时前
使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介
大数据·windows·elasticsearch·搜索引擎·全文检索·可用性测试
鸡c10 小时前
IM项目-----ElasticSearch
大数据·elasticsearch·搜索引擎
java1234_小锋12 小时前
在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?
大数据·elasticsearch·搜索引擎
java1234_小锋17 小时前
详细描述一下Elasticsearch搜索的过程?
大数据·elasticsearch·jenkins
gma9991 天前
ES 基本使用与二次封装
大数据·数据库·c++·elasticsearch·搜索引擎
java1234_小锋1 天前
详细描述一下Elasticsearch索引文档的过程?
大数据·elasticsearch·搜索引擎
小黑屋说YYDS1 天前
ElasticSearch7.x入门教程之集群安装(一)
elasticsearch
Mephisto.java2 天前
【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
大数据·elasticsearch·oracle·spark·sqlite·flume·memcached
衣舞晨风2 天前
[译]Elasticsearch Sequence ID实现思路及用途
elasticsearch·checkpoint·sequence·primaryterm
cab52 天前
聊一聊Elasticsearch的索引(1)
大数据·elasticsearch·搜索引擎