1.安装
参考CSDN es官方博客 https://elasticstack.blog.csdn.net/article/details/99413578
官网下载,启动即可
测试安装:
postman测试:
返回如下图所示,安装成功
2.概念
2.1 Cluster
集群,有一个或多个节点组成,默认情况下启动的es有一个cluster的集群,参照Es的配置文件elasticsearch.yml如下如所示:
PostMan查询集群状态
Get http://192.168.164.132:9200/_cluster/state
返回集群的信息
2.2 node
实例,一个node就是一个es的实例,多个node组成了es的集群,正常情况下,一个实例部署在一个单独的服务器上,学习中使用同一台服务器,或者多个虚拟机
node的分类
node类型 |
功能描述 |
参数(elasticsearch.yml中的配置项) |
master-eligible |
主node,可以对集群进行管理,增删node/index,分片 |
node.master |
data |
数据节点 |
node.data |
ingest |
数据接入节点 |
node.ingest |
machine learning |
机器学习 |
node.ml |
7.9版本后使用node.roles指定node类型 https://elasticstack.blog.csdn.net/article/details/110947372
一个node可以同时具有上述的多个类型,即一个node既可以是主node,也可以作为data node存储数据,默认情况下,一个node是同时具有上述多个功能的
针对master节点,由于是管理集群节点,可以通过设置参数cluster.remote.connect:false来拒绝远程连接
针对master节点,如果有多个节点的node.master为true的情况下,需要从这些节点中选取一个作为master节点,可以通过node.voting_only参数设置此节点只参与选举,自身不会被选举.
postman查看node
返回结果:
2.3 Document
文档,是es中存储的最小数据单元,对比关系型数据库,文档与数据库表中的记录对应.
文档的存储不依赖与预先定义,即不需要按照预先定义好的字段存储,可以增减字段
文档通常以Json的形式存储,因为http的传输多以json
2.4 Type
类型,是文档的逻辑容器,对比关系型数据库,类型与数据库的表是同一个概念.
类型在es 6版本之后,开始削弱,目前一个index只能由一个type,默认情况下是_doc
es8之后计划移除type
2.5 Index
索引,是文档的集合,对比关系型数据库是库的概念
当一个文档进入索引的时候,需要根据hash运算得出文档的存储位置(哪一个分片),具体公式如下:
shard_num = hash(_routing)%分片数
_routing是文档id,由此也可以看出,分片数并不能动态修改,修改后无法查到对应文档的存储位置了.
replica可以修改数目
2.6 shard
分片,将一个索引划分为几个不同的索引,拆分的索引就是分片
在创建索引的时候可以指定分片数,注意的是分片会存在多个node上,这也是es作为分布式部署的功能
分片可以让es存储远超过一个节点磁盘容量的数据,并且可以加快搜索速度,减轻压力
分片分为两种:
- primary shard 主分片,将一个索引分割形成的分片就是主分片
- replica shard 复制分片,对每一个主分片做的副本,可以在主分片故障时替换主分片
测试创建index指定分片
PUT http://192.168.164.132:9200/user/pretty
{
"settings":{
"index.number_of_shards":2,
"index.number_of_replicas":1
}
}
指定主分片2个,副本一个
查询index设置信息
GET http://192.168.164.132:9200/user/_settings?pretty
2.7 replica
副本,可以提高搜索效率,保证高可用
默认情况下,es创建索引时会为索引创建一个分片,一个副本
查询index健康信息
GET http://192.168.164.132:9200/_cat/indices/user
返回状态值,yellow表示不安全,因为现在只有一个节点,所以我们指定的分片和副本处于同一个节点上,如果整个节点挂了,此索引就不可用了
查询分片情况
GET http://192.168.164.132:9200/_cat/shards?pretty
可以看到副本都未分配,因为没有新的node加入,如果有新的node加入,会自动将副本分配至新node
2.8 shard 健康状态
分为三种:
- red 至少一个主分片未分配或不可用
- yellow 所有主分片都已分配,但是至少一个副本未分配
- green 表示所有分片都已分配