ElasticSearch(ES)详解(二)

前言

上一章主要讲了ES的单机部署以及快速入门,这章重点对于ES集群的原理及部署做以讲解。

一、ES集群讲解

(一)基本词条介绍

这里对于ES的构成单元做以回顾,同时加入集群内相关单元概念。

索引(index):一类文档的集合,相当于mysql中database。
映射(mapping):索引的结构,一旦设定就不能更改,若要更改映射,只有重建索引,并将数据迁移过来。
文档(document):索引信息的最小单元,数据符合映射结构。
字段(field):文档的字段,相当于数据表中的列。
集群(cluster):一个或多个节点组织在一起,一起提供相关服务。
节点(node):集群中的一个点,也可简单理解为一个服务器。
主节点(master node):在集群启动的时候会选举出一个master节点,主要负责管理索引,分配分片,管理节点状态等工作,一般情况下不负责数据的写入和查询。
数据节点(data node):负责ES集群中数据写入和检索。
分片(shards):ES对于大量的数据提供分片功能,及将一个索引的内容分为几段,其中的一段就为一个分片,在设置映射时可以设定分片数量。可以理解为:每个分片本身也是一个功能完善且独立的“索引”,并可以放到集群中的任意节点,分片一旦设定,不可更改,一般设定规则:1.每个分片大小为10G-30G;2.数量为节点的1-3倍。
副本(replicas):分片的备份,在映射中设定,可以动态修改,同时可以提供搜索服务。

下面对如何设置集群中索引的分片和副本进行演示:

#创建指定分片数量、副本数量的索引
PUT /student
{
    "mappings": {
        "properties": {
            "id": { "type": "long", "store": true },
         	 "name": { "type": "keyword", "store": true },
			"age": { "type": "integer", "store": true },
        }
    },
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 2
    }
}

#查看分片、主分片、副本分片
GET /_cat/student?v

(二)集群架构原理

1.写入原理

在这里插入图片描述
1.当客服端对集群提出写入请求的时候,他会随机选择一个节点发动请求,例如找到了node2节点。
2.node2节点也成为协调节点,他会根据写入文档的id进行计算(文档id的hash值%分片总数),计算出该文档应该写入的主分片,并将请求转发给该分片所在主机,如node1。
3.当node1接收到了写入请求,他会调用该分片的进程进行写入操作,并将数据同步到他的副本中。
4.当node1中的分片和副本都保存完后,将确认信息返回客服端。

2.检索原理

在这里插入图片描述
1.客户端向集群发送检索请求,随机分配一个节点比如node2。
2.node2节点变为协调节点,他会将检索请求广播到集群中所有的节点。
3.每个节点中的每个分片根据检索请求进行检索,并向协调节点(node2)返回查到的文档ID、节点地址、分片信息,又协调节点对各分片返回的信息进行全局排序。
4.node2,根据查询结果列表的文档ID,分别向相应的分片发送获取文档请求,获取完后将结果返回给客户端。

二、集群部署及管理

在这里插入图片描述

(一)部署集群

1.装备3台虚拟机,将ES的压缩包放入各主机,并解压,这里同单机安装,不做过多演示,详情可参照上一章节。
2.在应用目录下新建data 、log两个目录,并给一个普通用户更改权限。

mkdir ${ES目录}/data
mkdir ${ES目录}/log
#这里直接暴力解锁所有权限
chmod -R 777 ${ES目录}/log
chmod -R 777 ${ES目录}/data

3.依次更改三台主机的${ES目录}/config/elasticsearch.yml文件添加集群配置信息。

#集群名称
cluster.name: es-test
##节点名称
node.name: node1
##是不是有资格主节点
node.master: true
##是否存储数据 如果是主节点,这里可设置为false
node.data: true
##最大集群节点数
node.max_local_storage_nodes: 3
##ip地址 这里为绑定地址,及外部只能通过该地址访问 若为0.0.0.0及所有地址都可以访问
network.host: 0.0.0.0
##端口
http.port: 9200
##内部节点之间沟通端口 如果全部部署在一台机子上需要该配置,其他不用
#transport.tcp.port: 9700
##es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["node1","node2","node3"]
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master 若不想哪个节点当选主节点,可以不将该节点写入
cluster.initial_master_nodes: ["node1", "node2","node3"]
##数据和存储路径
path.data: /usr/local/export/es/elasticsearch-7.6.1/data
path.logs: /usr/local/export/es/elasticsearch-7.6.1/log


4.修改JAVA虚拟机配置,由于有些虚拟机配置太小,可能会造成内存过小启动不了ES服务的问题,这里将JAVA虚拟机启动内存调小一点。访问 ¥{ES目录}/config/jvm.options

-xms:最小内存
-xmx:最大内存

5.更改用户启动集群

su dbh123
${项目目录}/bin/elasticsearch

6.更改Kibana配置,访问集群。

vim  kibana-7.4.0-linux-x86_64-cluster/config/kibana.yml
#支持中文
i18n.locale: "zh-CN"
server.port: 5602
server.host: "0.0.0.0"
server.name: "kibana-itcast-cluster"
elasticsearch.hosts: ["http://node1:9200","http://node2:9200","http://node3:9203"]
elasticsearch.requestTimeout: 99999

(二)管理集群

访问kibana地址,可以对集群的信息进行管理查看
在这里插入图片描述
创建一个3个分片和1个副本的索引index1

  
PUT index1/
{
  "mappings": {
   "properties":{
    "name": {
      "type":"keyword"
    },
    "age":{
      "type":"integer"
    },
    "address":{
      "type":"text"
    }
  }
  
  },
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}

查看:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值