目录
集群(cluster)
节点(node)
索引(index)
类型(type)
要学好Elasticsearch,就得先对Elasticsearch中的概念有所了解,接下来我们就重点说说Elasticsearch中的集群、节点、索引、类型、文档、分片、映射和设置都是什么?
集群(cluster)
集群是由一个或多个节点组织在一起,它们共同持有完整数据,并一起提供索引和搜索功能。每个Elasticsearch集群都有一个唯一的名字标记,如果在创建Elasticsearch集群时没有显示的指定集群名称,默认的集群名称就是elasticsearch(全小写)。
我们可以在下方路径中找到我们集群的名字。
${ES_HOME}/config/elasticsearch.yml
${ES_HOME}是Elasticsearch环境变量path
看过我之前Elasticsearch文章的朋友,可以跟着我下面的步骤进行查看
首先 docker ps 查看运行的Elasticsearch容器id
通过 docker exec -it 699965738f24 bash 命令进入容器
输入 cat /usr/share/elasticsearch/config/elasticsearch.yml 进行查看集群名
节点(node)
每个节点都是一个Elasticsearch实例,每个实例都作为集群中的一部分,每个节点都有存储数据,参与索引和检索数据的功能。
每个节点也都是由一个名字来唯一标识的,在Elasticsearch7.X版本中,默认的节点名称就是安装部署的主机的名称。节点的名字还是挺重要的,因为在这个管理过程中,是需要确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。
我们如果需要修改节点名称,只需要显示的在elasticsearch.yml文件中如下一行即可。
node.name:节点新名字
快看看你们的Elasitcsearch的节点名字叫什么吧,可以跟着我下方操作查看节点名,修改后也记得看看哦。
查看主机名称 hostname -f打开浏览器或Postman输入 http://localhost:9200/_nodes
箭头所指就是节点的名称啦。
每个节点都可以通过配置指定的集群名字加入到指定的集群中,就如上面所说,如果在创建Elasticsearch集群时没有显示的指定集群名称,默认的集群名称就是elasticsearch(全小写),当多个节点启动后,它们就会自动的加入到这个默认集群中。
索引(index)
索引我们可以理解为是一些具有相似特征的数据(文档)组成的集合。
每个索引也都是由一个唯一的名字来标识的,并且Elasticsearch要求索引的名字仅仅只能以小写字母开头,搭配有限个字符。但我建议Elasticsearch都以小写英文字母命名,如果有多个英文字母中间可以用下划线分割,到时候写Java代码时,也可以很容易的转换成驼峰命名法。
类型(type)
在Elasticsearch7之前是有Type概念的,你可以在同一个索引下定义一个或者多个类型,类型是索引上的逻辑分类/分区,具体是什么含义完全在于你赋予它什么使命。
Elasticsearch7开始,Type的值固定是_doc了,因此我们并不需要设置Type。
文档(document)
一个文档是一个能够被检索的数据单元。我们也可以理解成我们想要检索的一条完整的数据就是一个文档。例如,我们要组建一个影像检索服务,那么影像的所有能够检索的信息就可以是一条文档信息。
文档是以Json格式来表示的。
分片和复制(shards & replicas)
在Elasitcsearch中,索引都是存储在每个节点中的,在每个节点中,索引也都存储在分片上。
在Elasitcsearch7之前的版本中,默认的分片数量是5个,从Elasticsearch7开始,默认的分片数量为1个了,并且所有版本单个索引最大支持的分片数量是1024个(当然你也可以通过更改参数修改更大的分片数量,但可能会造成不稳定)。
分片也有主分片和副本分片一说。在Elasticsearch7中主分片默认数量就是上文中所属的1片,同时也会为每个分片创建一个副本分片(副本分片数量同样也可更改,但为了安全起见,最少设置为1)。
- 副本分片只是主分片的一个副本,它是用来防止出现各种情况时导致数据丢失的,通俗来说就是,假设前一个持有主分片的节点挂掉了,那么一个副本分片就会变为主分片。
- 在索引写入数据时,新的文档将被索引写入到主分片中然后在同步到其他所有的副本分片中。
增加副本分片数量不会增加索引的容量。 - 副本分片也和主分片一样也都提供数据的查询操作。
一般情况下,索引的主分片和副本分片不会在同一个节点中。
一个索引(Index)可以存储超过节点磁盘大小的数据量,利用的正是分片,当分片设置为1的时候,索引中的所有数据都在这个分片当中。而当分片设置成多个时,每个分片都只保存索引当中所有数据的一部分。
映射和设置(mappings & settings)
mapping用来定义索引中文档的字段类型等信息。
setting设置一个索引的基本信息,如上文中所说的分片数量等。