加载中

配置 Elasticsearch

自行管理

Elasticsearch 提供了良好的默认设置,因此几乎不需要进行配置。大多数设置可以在运行中的集群上使用 Cluster update settings API(集群更新设置 API)进行更改。

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

注意

本主题介绍如何配置自管理的 Elasticsearch 集群。其他部署类型必须使用不同的步骤进行配置。

要了解如何为其他部署类型配置 elasticsearch.yml,请参阅 Elastic Stack 设置

JVM 和 log4j 配置并非在所有部署类型中都可用。要了解如何在 Elastic Cloud on Kubernetes 中配置有限的 JVM 选项,请参阅 管理计算资源

有关可应用于 Elasticsearch 集群的完整设置列表,请参阅 Elasticsearch 配置参考

有关在使用集群投入生产环境之前必须配置的设置列表,请参阅 重要设置配置

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 中设置该环境变量是不够的。相反,此变量会从以下位置之一加载:

  • Debian:/etc/default/elasticsearch
  • RPM:/etc/sysconfig/elasticsearch

您需要编辑与您的软件包相关的文件的 ES_PATH_CONF=/etc/elasticsearch 条目以更改 config 目录的位置。

配置格式为 YAML。以下是如何更改 Elasticsearch 中数据和日志目录路径的示例:

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 会将以下字符串拆分为 ${HOSTNAME} 环境变量的值列表:

export HOSTNAME="host1,host2"

默认情况下,如果配置文件中使用的环境变量在组件启动时不存在,配置验证将失败。可以通过使用环境变量的默认值来更改此行为,使用 ${MY_ENV_VAR:defaultValue} 语法。

集群和节点设置可以根据它们的配置方式进行分类。

您可以使用 cluster update settings API(集群更新设置 API)在运行中的集群上配置和更新动态设置。您也可以在未启动或已关闭的节点上使用 elasticsearch.yml 本地配置动态设置。

使用 Cluster update settings API 所做的更新可以是持久的(在集群重启后仍然有效),或临时的(在集群重启后会重置)。您也可以通过将它们分配一个 null 值来重置临时或持久设置。

如果您使用多种方法配置同一设置,Elasticsearch 将按以下优先级顺序应用这些设置:

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

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

警告

我们不再建议使用临时集群设置。请改用持久集群设置。如果集群变得不稳定,临时设置可能会意外清除,导致出现不期望的集群配置。

在自管理集群中,您应该使用 cluster update settings API(集群更新设置 API)来配置动态集群设置,并且仅将 elasticsearch.yml 用于静态集群设置和节点设置。API 不需要重启,并确保设置的值在所有节点上都相同。

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

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

有关如何执行 Elasticsearch 关键配置任务的更多信息,请参阅以下文档:

  • 安全:了解可防止恶意行为者篡改您的数据并加密到您的集群、从您的集群以及在您的集群内部的通信的安全功能。
  • 集群或部署用户:设置集群的身份验证和授权,并了解 Elasticsearch 用于在内部以及跨服务进行身份验证和授权请求的安全底层技术。
  • API 密钥:对您的部署和 Elasticsearch 资源的程序化访问进行身份验证和授权。
  • 连接器:管理 Elastic 和第三方系统之间的连接信息。
  • 远程集群:启用 Elasticsearch 集群之间的通信,以支持跨集群复制跨集群搜索
  • 添加和删除 Elasticsearch 节点:了解如何添加或删除节点以更改集群的大小和容量。
  • 生产指南:查阅您可以使用到的提示和指南,以设计一个符合您的工作负载、策略和部署需求的生产环境。
© . This site is unofficial and not affiliated with Elasticsearch BV.