本地英文版地址: ../en/settings.html
ElasticSearch 提供了的默认设置已经很好了,只需要很少的配置。 大多数配置都可以在运行中的集群上使用 集群更新设置 API 修改。
配置文件应该包含特定于节点的设置(例如 node.name
和 路径),或者 节点加入集群所需要的设置,比如cluster.name
和 network.host
。
配置文件的位置
Elasticsearch 有三个配置文件:
-
elasticsearch.yml
: Elasticsearch 配置文件 -
jvm.options
: Elasticsearch JVM 配置文件 -
log4j2.properties
: Elasticsearch 日志配置文件
这些配置文件位于配置目录,这个目录的默认位置取决于安装来源是 归档的发行版(tar.gz
或 zip
) 还是 安装包的发行版(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
中设置了不同的配置,则很难注意到差异。