配置 Elasticsearch
编辑配置 Elasticsearch
编辑Elasticsearch 默认配置良好,几乎不需要进行配置。大多数设置可以使用 集群更新设置 API 在运行中的集群上进行更改。
配置文件应包含特定于节点的设置(如 node.name
和路径),或者节点加入集群所需的设置,如 cluster.name
和 network.host
。
配置文件位置
编辑Elasticsearch 有三个配置文件
-
elasticsearch.yml
用于配置 Elasticsearch -
jvm.options
用于配置 Elasticsearch JVM 设置 -
log4j2.properties
用于配置 Elasticsearch 日志记录
这些文件位于 config 目录中,其默认位置取决于安装是来自归档分发(tar.gz
或 zip
)还是软件包分发(Debian 或 RPM 包)。
对于归档分发,config 目录的默认位置为 $ES_HOME/config
。config 目录的位置可以通过 ES_PATH_CONF
环境变量更改,如下所示
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
或者,您可以通过命令行或 shell 配置文件 export
ES_PATH_CONF
环境变量。
对于软件包分发,config 目录的默认位置为 /etc/elasticsearch
。config 目录的位置也可以通过 ES_PATH_CONF
环境变量更改,但请注意,在 shell 中设置此变量是不够的。相反,此变量来自 /etc/default/elasticsearch
(对于 Debian 包)和 /etc/sysconfig/elasticsearch
(对于 RPM 包)。您需要在其中一个文件中编辑 ES_PATH_CONF=/etc/elasticsearch
条目以更改 config 目录的位置。
配置文件格式
编辑配置格式为 YAML。以下是更改数据和日志目录路径的示例
path: data: /var/lib/elasticsearch logs: /var/log/elasticsearch
设置也可以展平如下
path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch
在 YAML 中,您可以将非标量值格式化为序列
discovery.seed_hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com
尽管不太常见,您也可以将非标量值格式化为数组
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]
环境变量替换
编辑配置文件中使用 ${...}
符号引用的环境变量将被替换为环境变量的值。例如
node.name: ${HOSTNAME} network.host: ${ES_NETWORK_HOST}
环境变量的值必须是简单的字符串。使用逗号分隔的字符串来提供 Elasticsearch 将解析为列表的值。例如,Elasticsearch 会将以下字符串拆分为 ${HOSTNAME}
环境变量的值列表
export HOSTNAME="host1,host2"
集群和节点设置类型
编辑集群和节点设置可以根据其配置方式进行分类
- 动态
-
您可以使用 集群更新设置 API 在运行中的集群上配置和更新动态设置。您也可以使用
elasticsearch.yml
在未启动或关闭的节点上本地配置动态设置。使用集群更新设置 API 进行的更新可以是持久的,这意味着在集群重启后仍然有效,也可以是临时的,这意味着在集群重启后会重置。您还可以使用 API 为临时或持久设置分配一个
null
值来重置它们。如果您使用多种方法配置相同的设置,Elasticsearch 将按照以下优先级顺序应用设置
- 临时设置
- 持久设置
-
elasticsearch.yml
设置 - 默认设置值
例如,您可以应用一个临时设置来覆盖持久设置或
elasticsearch.yml
设置。但是,对elasticsearch.yml
设置的更改不会覆盖已定义的临时或持久设置。如果您使用 Elasticsearch Service,请使用 用户设置 功能来配置所有集群设置。此方法使 Elasticsearch Service 可以自动拒绝可能破坏集群的不安全设置。
如果您在自己的硬件上运行 Elasticsearch,请使用 集群更新设置 API 来配置动态集群设置。仅对静态集群设置和节点设置使用
elasticsearch.yml
。该 API 不需要重启,并确保设置的值在所有节点上都相同。我们不再建议使用临时集群设置。请改用持久集群设置。如果集群变得不稳定,临时设置可能会意外清除,从而导致可能不需要的集群配置。请参阅 临时设置迁移指南。