配置 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。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 将按照以下优先级顺序应用设置

  1. 临时设置
  2. 持久设置
  3. elasticsearch.yml 设置
  4. 默认设置值

例如,您可以应用一个临时设置来覆盖持久设置或 elasticsearch.yml 设置。但是,对 elasticsearch.yml 设置的更改不会覆盖已定义的临时或持久设置。

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

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

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

静态

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

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