配置 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
。可以通过 ES_PATH_CONF
环境变量更改 config 目录的位置,如下所示
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch
或者,您可以通过命令行或 shell 配置文件 export
ES_PATH_CONF
环境变量。
对于软件包发行版,config 目录位置默认为 /etc/elasticsearch
。也可以通过 ES_PATH_CONF
环境变量更改 config 目录的位置,但请注意,在 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 不需要重启,并确保所有节点上的设置值相同。我们不再建议使用瞬态集群设置。请改用持久性集群设置。如果集群变得不稳定,瞬态设置可能会意外清除,从而导致可能不需要的集群配置。请参阅 瞬态设置迁移指南。