本文主要是讲解ElasticSearch5.6.1的配置项。ElasticSearch5.6.1为目前该公司最新的产品,我们在搭建的过程中,一开始最重要的就是会配置elasticsearch.yml这个文件。
然而,由于ElasticSearch的更新换代太快,以致于有部分经典的书里面的内容早就不适用了,我也是经过长期摸索才总结出一部分出来。
如果有读者了解到一些经用设置,也请告诉我。
本文不会从ElasticSearch5.6.1的介绍和安装开始讲述,如果对ES没有概念可以通过下面的方式。
有关ElasticSearch的介绍和一些基本概念,请参阅我的另一篇博文。
ElasticSearch介绍和基本概念http://blog.csdn.net/deliciousion/article/details/78050251
关于ElasticSearch5.6.1的环境搭建,请参考我另一篇博文。
ElasticSearch5.6.1环境搭建与运行
http://blog.csdn.net/deliciousion/article/details/78055724
ES的配置文件放在主目录的config文夹中,里面有个名为elasticsearch.yml的文件。
我们用文本文件打开该文件
现在我们分版块讲解
1.Cluster集群
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
#
这块主要是设置集群的,cluster.name指定集群的名称,同一个集群的节点要设置在同一个集群名称。如果不配置该项,系统默认取elasitcsearch。
2.Node节点
------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
这一部分主要是设置节点的。node.name指定节点的名称,同一集群的节点名称不能相同,如果不配置该项,系统会随机分配一个名称。
node.attr.rack指定节点的部落属性,这是一个比集群更大的范围。
node.master指定是否为主节点。该属性可不指定,节点之间自主选举。
node.data指定是否存储数据(数据节点)
3.Path路径
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
#
# Path to log files:
#
#path.logs: /path/to/logs
这一部分是关于数据和日志的存放路径的,这两个设置十分重要,因为比如要进行版本升级,如果程序与数据分离,将非常容易实现。程序的崩溃也不影响数据。
如果不配置这两项,这两个目录将在ES的主目录下创建。
4.Memory内存
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
这一部分是设置内存的。bootstrap.memory_lock,启动后是否锁定内存,提高ES的性能。
5.Network
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 192.168.0.1
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
这一部分是有关网络的设置,比如RESTful接口,包括curl、浏览器、Kibana等HTTP连接过来的,都是通过这里设置。
network.host设置对外的网关IP,默认本地回环。
http.port设置对外的端口,端口建议重新设置,提高安全性。默认9200
transport.tcp.port 设置TCP传输端口,这个端口也非常重要,首先,下面Discovery部分的设置,集群内节点发现走的就是这个端口,发现后,节点之前传输数据也是走这个TCP端口,另外,官方提供的ES JAVA API也是通过这个端口传输数据的。
6.Discovery
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
#discovery.zen.minimum_master_nodes: 3
#
# For more information, consult the zen discovery module documentation.
这一部分主要设置集群的节点之间的连接的,所以叫发现,
discovery.zen.ping.unicast.hosts设置集群内节点的主机,比如集群内有两台机192.168.2.1,192.168.2.2,TCP端口都设置为9300
那么两个节点关于这一项的配置都应该设置成如下这样,有多少台就设置多少个,而且用的是TCP端口。
discovery.zen.ping.unicast.hosts: ["192.168.2.1:9300", "192.168.2.2:9300"]
有关ES的配置项就讲解到这里,如果读者有疑问或者有更深刻体会,请告诉,大家一起交流学习。