原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/settings.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/settings.html

配置 Elasticsearch

ElasticSearch 提供了的默认设置已经很好了,只需要很少的配置。 大多数配置都可以在运行中的集群上使用 集群更新设置 API 修改。

配置文件应该包含特定于节点的设置(例如 node.name 和 路径),或者 节点加入集群所需要的设置,比如cluster.namenetwork.host

配置文件的位置

Elasticsearch 有三个配置文件:

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

这些配置文件位于配置目录,这个目录的默认位置取决于安装来源是 归档的发行版(tar.gzzip) 还是 安装包的发行版(Debian or RPM packages)。

对于 归档的发行版,配置目录默认位于 $ES_HOME/config。 配置目录可以通过环境变量 ES_PATH_CONF 来修改,比如:

ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

或者,你可以通过 命令行 或 shell 配置文件导出(export) 环境变量ES_PATH_CONF

对于 安装包的发行版,配置目录默认位于 /etc/elasticsearch。 配置目录也可以通过环境变量 ES_PATH_CONF 来修改,但是请注意,光是在 shell 中设置时不够的。 相反,这个变量来源于 /etc/default/elasticsearch(Debian安装包) 和 /etc/sysconfig/elasticsearch(RPM安装包)。 你还需在其中一个文件中编辑ES_PATH_CONF=/etc/elasticsearch记录,以更改配置目录的位置。

配置文件格式

配置文件的格式是 YAML。 下面是一个修改数据和日志目录路径的示例:

path:
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch

设置还可以像这样展开:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

环境变量替代 (Environment variable substitution)

配置文件中的${...}符号引用的环境变量将被替换为环境变量的值。比如:

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

环境变量的值必须是简单字符串。 使用逗号分隔的字符串提供的值,将被 ElasticSearch 解析为一个列表。 例如,Elasticsearch 会将以下字符串拆分为${HOSTNAME}环境变量的值列表:

export HOSTNAME=“host1,host2"

集群和节点设置类型

可以根据集群和节点设置的配置方式对它们进行分类:

动态 (Dynamic)

可以使用 集群更新设置 API 配置和更新正在运行的集群上的动态设置。

您还可以使用 elasticsearch.yml 在未启动或关闭的节点上本地配置动态设置。

最好使用 集群更新设置API 来设置动态的、集群范围的设置,并且只对本地配置使用elasticsearch.yml。 使用 集群更新设置API 可以确保所有节点上的配置都是相同的。 如果你意外地在不同节点上的配置文件elasticsearch.yml中设置了不同的配置,则很难注意到差异。

静态 (Static)

静态设置只能在未启动或关闭的节点上使用elasticsearch.yml进行配置。

必须在集群中的每个相关节点上设置 静态设置。