Elasticsearch 提供了良好的默认值,并且只需要很少的配置。可以使用集群更新设置API在正在运行的集群上更改大多数设置 。
配置文件位置
Elasticsearch 有三个配置文件:
•elasticsearch.yml 用于配置 Elasticsearch•jvm.options 用于配置 Elasticsearch JVM 设置•log4j2.properties 用于配置 Elasticsearch 日志记录
配置文件格式编辑
配置格式为YAML。以下是更改数据和日志目录路径的示例:
代码语言:javascript复制path:
data: /var/lib/elasticsearch
logs: /var/log/elasticsearch
设置也可以按如下方式展平:
代码语言:javascript复制path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
在 YAML 中,您可以将非标量值格式化为序列或数组:
代码语言:javascript复制discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
或者:
代码语言:javascript复制discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]
环境变量替换
${...}配置文件中使用符号引用的环境变量将替换为环境变量的值。例如:
代码语言:javascript复制node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
环境变量的值必须是简单的字符串。使用逗号分隔的字符串提供 Elasticsearch 将解析为列表的值。例如,Elasticsearch 会将以下字符串拆分为${HOSTNAME}环境变量的值列表:
代码语言:javascript复制export HOSTNAME= "host1,host2"
集群和节点设置类型编辑
集群和节点设置可以根据它们的配置方式进行分类:
动态的
可以使用集群更新设置 API在正在运行的集群上配置和更新设置 。也可以在未启动或关闭的节点上使用本地配置设置 elasticsearch.yml。
使用集群更新设置 API 进行的更新是可以持久的,适用于集群重新启动,也可以是瞬态的,在集群重新启动后重置。还可以通过null使用 API为其分配一个值来重置临时或持久设置。
如果您使用多种方法配置相同的设置,Elasticsearch 会按以下优先顺序应用设置:
1.瞬态设置2.持久设置3.elasticsearch.yml 环境4.默认设置值
例如,您可以应用临时设置来覆盖永久设置或elasticsearch.yml设置。但是,对elasticsearch.yml 设置的更改不会覆盖已定义的瞬态或持久设置。
静止的
静态设置只能在未启动或关闭的节点上使用 elasticsearch.yml.
必须在集群中的每个相关节点上设置静态设置。
重要的 Elasticsearch 配置
Elasticsearch 只需很少的配置即可开始使用,但在生产中使用集群之前必须考虑许多事项:
•路径设置•集群名称设置•节点名称设置•网络主机设置•发现设置•堆大小设置•JVM 堆转储路径设置•GC 日志设置•临时目录设置•JVM致命错误日志设置•集群备份
路径设置
Elasticsearch 将您索引的数据写入索引并将数据流写入data 目录。Elasticsearch 将自己的应用程序日志写入一个logs目录,其中包含有关集群运行状况和操作的信息。
代码语言:javascript复制path:
data: /var/data/elasticsearch
logs: /var/log/elasticsearch
集群名称设置
代码语言:javascript复制cluster.name: logging-prod
节点名称设置
代码语言:javascript复制node.name: prod-data-2
网络主机设置
代码语言:javascript复制network.host: 192.168.1.10
发现集群设置
在进入生产之前配置两个重要的发现和集群形成设置,以便集群中的节点可以相互发现并选举一个主节点。
代码语言:javascript复制discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
- [0:0:0:0:0:ffff:c0a8:10c]:9301
1. 端口是可选的,默认为9300,但可以被覆盖。
2. 如果一个主机名解析为多个 IP 地址,该节点将尝试在所有解析地址处发现其他节点。 3. IPv6 地址必须用方括号括起来。
堆大小设置
默认情况下,Elasticsearch 会根据节点的角色和总内存自动设置 JVM 堆大小 。建议大多数生产环境使用默认大小。