在es根目录下有一个config目录,在此目录下有两个文件分别是elasticsearch.yml和logging.yml。
logging.yml是日志文件,es也是使用log4j来记录日志的,我在此文件中配置日志级别。
elasticsearch.yml是es的基本配置文件es的参数都在这个文件中,我们这里结合此文件来介绍es的核心概念和参数。
1:集群
node.master: true表示此节点有资格竞争成为主节点。
cluster.name: elasticsearch表示es集群的名称可以自行更改
discovery.zen.ping.multicast.enabled: false 集群的自动发现机制,false不启动
discovery.zen.ping.unicast.hosts: ["host1","host2:port"] 告诉从节点主节点的位置,默认是9300端口。
Es集群由多个节点组成,其中一个为主节点其他为从节点。从节点通过竞争来确定哪个是主节点,一般在集群中第一个启动的符合条件的就是主节点。主节点负责管理集群状态包括管理分片和副本的状态以及节点的增加和删除。
Es集群具有去中心化的概念,我们可以访问集群中的任何一个节点来操作整个集群,不管它是主节点还是从节点只要安装了相关插件就行。
同一个网段内的es节点会自动互相感知自动组成集群。
自动发现机制
Es是基于P2P的系统,当集群启动后会先通过广播寻找存在的节点,再通过多播协议进行节点间的通信进而自动组建es集群,同时也支持节点之间的通信。
同一网段内节点组建集群,首先启动自动发现机制另外节点的集群名称要一致
discovery.zen.ping.multicast.enabled: true
cluster.name: elasticsearch
如果不同网段的节点要组建集群首先各个节点禁用自动发现机制然后给从节点指定主节点的位置,默认是9300端口。
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["host1","host2:port"]
查看集群状态
浏览器:http://192.168.79.131:9200/_cluster/health?pretty
{
"cluster_name" :"shb01",
"status" :"green",
"timed_out" :false,
"number_of_nodes": 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" :0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
2:shards分片
index.number_of_shards: 5 分片数
Es中索引库会被拆分成多个分片,各个分片会存储在不同的节点上以提高集群的存储能力从而构成分布式的存储和分布式的查询。
通过index.number_of_shards参数指定分片数默认是5,分片数一旦指定集群启动后不能动态的修改。
3:replicas副本
index.number_of_replicas:1副本数,默认为1
当某个节点宕机或被删除后可以通过副本进行恢复,另外也可以提高查询效率分流查询实现负载均衡。分片和其副本不会被存储与同一个节点上,如果只有一个节点则没有副本。
4:持久化方式
gateway.type:local
索引的持久化方式默认是local本地方式,也可以存放在hdfs中。
/usr/local/elasticsearch-1.4.4/data/elasticsearch/nodes/0/indices/shb01/0
第一个0表示集群中的节点编号,最后一个0表示分片。我的节点上一共有0到4,共5个分片。
5:transport
交互方式,es集群与客户端使用tcp协议交互同时也支持http协议
transport.tcp.port: 9300 节点之间通信使用此端口
http.port: 9200 http请求使用9200端口
我们在启动es时可以看到es在监控这两个节点
6:recovery
数据恢复与重新分布,当有节点加入或退出时es会根据机器的负载对索引分片进行重新分配,挂了的节点在重启后也会进行恢复。
7:其他参数
node.data: true 为true表示此节点可以用来存储数据。默认true
http.enabled: false 默认不禁用http访问
http.max_content_length: 100mb 限制_bulk批处理的最大数据量。
bootstrap.mlockall: true 禁用内存交互