elasticsearch.yml

本文详细介绍了Elasticsearch中关键配置项的作用与设置方法,包括集群发现、节点角色定义、索引分片策略及网络配置等,帮助读者理解并合理调整Elasticsearch配置以优化性能。

discovery.zen.minimum_master_nodes: 2
这个参数决定了要选举一个Master需要多少个主节点(最少候选主节点数)。默认值是1。官方给出的建议是 N/2 + 1,N是集群中主节点的数量,例如一个有3个主节点的集群,minimum_master_nodes 应该被设置成 3/2 + 1 = 2(向下取整)。

discovery.zen.ping_timeout: 30s
这个参数指定从节点访问主节点后如果N秒之内没有回复则默认主节点挂了,默认为3s

discovery.zen.join_timeout:5s
加入超时时间,默认为discovery.zen.ping_timeout的3倍

discovery.zen.ping.multicast.enabled: false
默认使用单播发现模式,防止节点无意中加入集群

discovery.zen.ping.unicast.hosts: ["192.168.0.1:9300","192.168.0.2:9300"]
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。

cluster.name: elasticsearch
配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

node.name: "Franz Kafka"
节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。

node.master: true
指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

node.data: true
指定该节点是否存储索引数据,默认为true。

index.number_of_shards: 5
设置默认索引分片个数,默认为5片。

index.number_of_replicas: 1
设置默认索引副本个数,默认为1个副本。

http.port: 9200
设置对外服务的http端口,默认为9200。

transport.tcp.port: 9300
设置节点间交互的tcp端口,默认是9300。

network.bind_host: 192.168.0.1
设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

network.publish_host: 192.168.0.1
设置其它节点和该节点交互的ip地址,如果不设置它会自动获取,值必须是个真实的ip地址。

network.host: 192.168.0.1
这个参数是用来同时设置bind_host和publish_host上面两个参数。

gateway.recover_after_nodes: 8
Elasticsearch 在存在至少 8 个节点(数据节点或者 master 节点)后进行数据恢复。

gateway.expected_nodes: 10
设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

gateway.recover_after_time: 5m
设置初始化数据恢复进程的超时时间,默认是5分钟。和gateway.expected_nodes先达到一个即可

gateway.recover_after_nodes,gateway.expected_nodes,gateway.recover_after_time这三个设置可以在集群重启的时候避免过多的分片交换。这可能会让数据恢复从数个小时缩短为几秒钟。

bootstrap.mlockall: true
允许 JVM 锁住内存,禁止内存被交换至交换区,使用交换分区,影响elasticsearch性能

action.destructive_requires_name: true
删除只限于特定名称指向的数据, 而不允许通过指定 _all 或通配符来删除指定索引库

action.auto_create_index: false
禁止自动创建索引

在使用 Docker 安装 Elasticsearch 时,如果遇到 `elasticsearch.yml` 配置文件找不到的问题,通常是因为挂载配置文件的路径设置错误或配置文件本身不存在。以下是一些解决方法和注意事项: ### 配置文件路径问题 在 Docker 容器中,`elasticsearch.yml` 的默认位置是 `/usr/share/elasticsearch/config/elasticsearch.yml`。如果用户在运行容器时没有正确挂载该文件,或者挂载路径不正确,就会导致找不到配置文件的问题。建议检查 `-v` 参数的路径设置是否正确: ```bash -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ``` 确保宿主机路径 `/mydata/elasticsearch/config/elasticsearch.yml` 存在,并且 `elasticsearch.yml` 文件确实存在于该目录中。如果文件不存在,可以手动创建并配置必要的内容,例如: ```yaml node.name: node-1 network.host: 0.0.0.0 ``` ### 容器内文件权限问题 另一个常见原因是文件权限不足。Elasticsearch 容器以非 root 用户身份运行,因此需要确保挂载的文件和目录具有适当的权限。可以通过以下命令修改文件权限: ```bash chown -R 1000:1000 /mydata/elasticsearch ``` 其中,`1000:1000` 是 Elasticsearch 容器中默认用户的 UID 和 GID。 ### 配置文件内容格式问题 如果配置文件存在但内容格式不正确,可能会导致 Elasticsearch 无法解析文件。例如,配置文件中出现语法错误或结构错误,如 `SettingsException[Failed to load settings from [elasticsearch.yml]]` 或 `ElasticsearchParseException` 错误[^2]。确保配置文件中的每个设置都以冒号后跟空格的形式书写,并且没有多余的字符或缩进错误。 ### 配置文件缺失时的默认行为 如果未挂载 `elasticsearch.yml`,Elasticsearch 容器会使用默认配置启动。这种情况下,虽然容器可以正常运行,但可能无法满足特定的配置需求。为了确保配置文件的完整性,建议始终挂载自定义的 `elasticsearch.yml` 文件。 ### 验证配置文件是否成功挂载 进入容器内部验证配置文件是否成功挂载,可以通过以下命令执行: ```bash docker exec -it elasticsearch /bin/bash cat /usr/share/elasticsearch/config/elasticsearch.yml ``` 通过这种方式可以确认文件是否存在于容器中,并且内容是否正确。 ### 示例 Docker 启动命令 以下是一个完整的 Docker 启动命令示例,确保路径和配置正确: ```bash docker run --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.9.2 ``` 通过以上方法,可以有效解决 `elasticsearch.yml` 配置文件找不到的问题,并确保 Elasticsearch 容器能够正确加载配置文件并正常运行。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值