欲先利其事,必先利其器,学 Elasticsearch 也同样遵循这个道理。上一篇文章,我们介绍了 Elasticsearch 的基本概念及特点,今天再介绍一下 Elasticsearch 的配置。本文将对 Elasticsearch 已有的一些配置分类地做详细描述。一起来学习复习吧!
# ---------------------------------- Cluster -----------------------------------
# ----------------------------------- Paths ------------------------------------
参考自:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-node.html
# ------------------------------------ Node ------------------------------------
以下为对节点角色的介绍:
# 配置文件中给出了三种配置高性能集群拓扑结构的模式,如下:
# 1. 如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器。在集群中,需要单独设置几个这样的节点只负责存储、查询、聚合数据。
# node.master: false
# node.data: true
# node.ingest: false
# 2. 如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调器
# node.master: true
# node.data: false
# node.ingest: false
# 3. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生成搜索结果等
# node.master: false
# node.data: false
# node.ingest: true (可不指定,默认为开启)
# 4. 仅作为协调器
# node.master: false
# node.data: false
# node.ingest: false
# 5. 既有成为主节点的资格,又可以存储数据,还可以作为预处理节点(不建议这样,节点压力太大)
# node.master: true
# node.data: true
# node.ingest: true
建议集群中设置 3台 以上的节点作为 master 节点【node.master: true,node.data: false,node.ingest:false】,这些节点只负责成为主节点,维护整个集群的状态。
再根据数据量设置一批 data节点【node.master: false,node.data: true,node.ingest:false】,这些节点只负责存储数据,后期提供建立索引和查询索引的服务。如果用户请求比较频繁,这些节点的压力也会比较大。
所以在集群中建议再设置一批 ingest 节点也称之为 client 节点【node.master: false,node.data: false,node.ingest:true】,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。
# ----------------------------------- Memory -----------------------------------
参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-network.html
# ---------------------------------- Network -----------------------------------
# 设置索引的分片数,默认为 5
index.number_of_shards: 5
# 设置索引的副本数,默认为 1:
index.number_of_replicas: 1
# --------------------------------- Discovery ----------------------------------
参考自:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-gateway.html#modules-gateway
# ---------------------------------- Gateway -----------------------------------
# 整个集群重新启动时,集群恢复的设置(避免前期执行大量不必要的重新均衡):
假如某配置文件有上述三配置,则上述设置的组合意味着 Elasticsearch 等待至 gateway.recover_after_nodes 所表示的节点数量存在后,在 gateway.recover_after_time 所表示的分钟数 或者 在 gateway.expected_nodes 所表示的节点数连接到集群(以先满足任一条件为准)后再开始恢复。
# ---------------------------------- Various -----------------------------------
Elasticsearch 已经为大多数参数设置合理的默认值,该文档对配置文件已有的一些配置做了详细描述。请注意,配置文件为 yml 格式的文件,书写请参考以下标准: