配置 Elasticsearch
自行管理
Elasticsearch 提供了良好的默认设置,因此几乎不需要进行配置。大多数设置可以在运行中的集群上使用 Cluster update settings API(集群更新设置 API)进行更改。
配置文件应包含特定于节点的设置(例如 node.name 和路径),或节点加入集群所需的设置,例如 cluster.name 和 network.host。
本主题介绍如何配置自管理的 Elasticsearch 集群。其他部署类型必须使用不同的步骤进行配置。
要了解如何为其他部署类型配置 elasticsearch.yml,请参阅 Elastic Stack 设置。
JVM 和 log4j 配置并非在所有部署类型中都可用。要了解如何在 Elastic Cloud on Kubernetes 中配置有限的 JVM 选项,请参阅 管理计算资源。
有关可应用于 Elasticsearch 集群的完整设置列表,请参阅 Elasticsearch 配置参考。
有关在使用集群投入生产环境之前必须配置的设置列表,请参阅 重要设置配置。
Elasticsearch 包含三个配置文件
elasticsearch.yml用于配置 Elasticsearchjvm.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 中设置该环境变量是不够的。相反,此变量会从以下位置之一加载:
- 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 将按以下优先级顺序应用这些设置:
- 临时设置
- 持久设置
elasticsearch.yml设置- 默认设置值
例如,您可以应用一个临时设置来覆盖持久设置或 elasticsearch.yml 设置。但是,对 elasticsearch.yml 设置的更改不会覆盖已定义的临时或持久设置。
我们不再建议使用临时集群设置。请改用持久集群设置。如果集群变得不稳定,临时设置可能会意外清除,导致出现不期望的集群配置。
在自管理集群中,您应该使用 cluster update settings API(集群更新设置 API)来配置动态集群设置,并且仅将 elasticsearch.yml 用于静态集群设置和节点设置。API 不需要重启,并确保设置的值在所有节点上都相同。
静态设置只能在未启动或已关闭的节点上使用 elasticsearch.yml 进行配置。
静态设置必须在集群中的每个相关节点上设置。
有关如何执行 Elasticsearch 关键配置任务的更多信息,请参阅以下文档:
- 安全:了解可防止恶意行为者篡改您的数据并加密到您的集群、从您的集群以及在您的集群内部的通信的安全功能。
- 集群或部署用户:设置集群的身份验证和授权,并了解 Elasticsearch 用于在内部以及跨服务进行身份验证和授权请求的安全底层技术。
- API 密钥:对您的部署和 Elasticsearch 资源的程序化访问进行身份验证和授权。
- 连接器:管理 Elastic 和第三方系统之间的连接信息。
- 远程集群:启用 Elasticsearch 集群之间的通信,以支持跨集群复制和跨集群搜索。
- 添加和删除 Elasticsearch 节点:了解如何添加或删除节点以更改集群的大小和容量。
- 生产指南:查阅您可以使用到的提示和指南,以设计一个符合您的工作负载、策略和部署需求的生产环境。