配置 Elasticsearch编辑

Elasticsearch 附带了良好的默认设置,几乎不需要配置。大多数设置都可以在运行的集群上使用 集群更新设置 API 进行更改。

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

配置文件位置编辑

Elasticsearch 有三个配置文件

  • elasticsearch.yml 用于配置 Elasticsearch
  • jvm.options 用于配置 Elasticsearch JVM 设置
  • log4j2.properties 用于配置 Elasticsearch 日志

这些文件位于 config 目录中,其默认位置取决于安装是来自归档发行版(tar.gzzip)还是软件包发行版(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 将按以下优先级顺序应用设置

  1. 瞬态设置
  2. 持久性设置
  3. elasticsearch.yml 设置
  4. 默认设置值

例如,您可以应用瞬态设置来覆盖持久性设置或 elasticsearch.yml 设置。但是,更改 elasticsearch.yml 设置不会覆盖已定义的瞬态或持久性设置。

如果您使用 Elasticsearch Service,请使用 用户设置 功能来配置所有集群设置。此方法允许 Elasticsearch Service 自动拒绝可能破坏集群的不安全设置。

如果您在自己的硬件上运行 Elasticsearch,请使用 集群更新设置 API 来配置动态集群设置。仅将 elasticsearch.yml 用于静态集群设置和节点设置。API 不需要重启,并确保所有节点上的设置值相同。

我们不再建议使用瞬态集群设置。请改用持久性集群设置。如果集群变得不稳定,瞬态设置可能会意外清除,从而导致可能不需要的集群配置。请参阅 瞬态设置迁移指南

静态

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

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