天天看点

ElasticSerach学习(一)-基本概念

1.安装

参考CSDN es官方博客

https://elasticstack.blog.csdn.net/article/details/99413578

官网下载,启动即可

测试安装:

postman测试:

http://192.168.164.132:9200/

返回如下图所示,安装成功

ElasticSerach学习(一)-基本概念

2.概念

2.1 Cluster

集群,有一个或多个节点组成,默认情况下启动的es有一个cluster的集群,参照Es的配置文件elasticsearch.yml如下如所示:

ElasticSerach学习(一)-基本概念

PostMan查询集群状态

Get

http://192.168.164.132:9200/_cluster/state

返回集群的信息

ElasticSerach学习(一)-基本概念

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是同时具有上述多个功能的

ElasticSerach学习(一)-基本概念

针对master节点,由于是管理集群节点,可以通过设置参数cluster.remote.connect:false来拒绝远程连接

针对master节点,如果有多个节点的node.master为true的情况下,需要从这些节点中选取一个作为master节点,可以通过node.voting_only参数设置此节点只参与选举,自身不会被选举.

postman查看node

http://192.168.164.132:9200/_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config

返回结果:

ElasticSerach学习(一)-基本概念

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存储远超过一个节点磁盘容量的数据,并且可以加快搜索速度,减轻压力

分片分为两种:

  1. primary shard 主分片,将一个索引分割形成的分片就是主分片
  2. 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
ElasticSerach学习(一)-基本概念

2.7 replica

副本,可以提高搜索效率,保证高可用

默认情况下,es创建索引时会为索引创建一个分片,一个副本

查询index健康信息

http://192.168.164.132:9200/_cat/indices/user
ElasticSerach学习(一)-基本概念

返回状态值,yellow表示不安全,因为现在只有一个节点,所以我们指定的分片和副本处于同一个节点上,如果整个节点挂了,此索引就不可用了

查询分片情况

http://192.168.164.132:9200/_cat/shards?pretty
ElasticSerach学习(一)-基本概念

可以看到副本都未分配,因为没有新的node加入,如果有新的node加入,会自动将副本分配至新node

2.8 shard 健康状态

分为三种:

  1. red 至少一个主分片未分配或不可用
  2. yellow 所有主分片都已分配,但是至少一个副本未分配
  3. green 表示所有分片都已分配