四、Elasticsearch基本概念:索引-文档-分片

Elasticsearch有几个核心概念,我们先了解一下,对后面的学习有很大的帮忙。

Elasticsearch是一个分布式文档(document oriented)存储。与关系型数据库数据保存到由行和列不同,Elasticsearch不将信息存储为列数据,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档分布在整个集群中,可以从任何节点立即访问。它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。你可以对文档进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。

 

集群

可以将多台ES服务器作为一个集群使用,可以在集群中任意一台节点上进行搜索。一个集群有一个唯一的名字(可以配置文件中修改),节点启动后通过集群名称来确定加入那个集群(这里使用了网络广播原理),同时单个集群中只有一个节点会被选举为主节点(master)

 

节点

节点是作为集群的一部分的单个服务器,存储数据并参与集群的索引和搜索功能。每个节点也有一个名称,默认是启动时随机生成一个唯一标识符,建议启动前指定一个名称,以便后面的管理。

在ES中,节点主要有3种

1、Coordinating Node  处理请求的节点叫 Coordinating Node

    路由到正确的节点,例如创建索引,就路由到master节点
    所有节点默认都是Coordinating Node

    通过将其他类型设置成False,使其变成Coordinating Node节点

2、Data Node  可以保存数据的节点,就叫Data Node节点

    节点启动后,默认就是数据节点,可以设置成node.data: false 禁止
    Data Node保存分片数据,在数据扩展上起到至关重要的作用,(由Master Node决定如何把分片分发到数据节点上)
    通过增加数据节点,可以解决数据水平扩展和解决数据单点的问题

3、Master Node  处理创建、删除索引等请求、决定分片分到那个节点,维护并更新Cluster 状态

    Master 节点非常重要,在部署的时候需要考虑单点的问题
    为一个集群设置多个Master节点/每一个节点只承担Master单一角色

 

索引(indices

有相似特性的文档的集合,如:订单数据索引,产品信息索引。这里我们可以理解为【Mysq的l数据库】。

索引由一个名称(必须全部是小写)标识。在单个集群中,可以定义任意多个索引。

文档(document)

一个文档是一个可被索引的基础信息单元。文档以JSON(Javascript Object Notation)格式来表示。如:一条商品信息可以是一个文档,一笔订单信息也是一个文档。

索引、文档 与Mysql对比理解
索引(indices)--> 数据库

文档(Document)--> Row 行

字段(Field)-->Columns 列 (Json中的Key)

分片

作用:用于解决文档过多过大,单个节点存储不了的问题,同时对太多太大的数据量会导致速度太慢。

一个分片(shard)是一个最小级别“工作单元(worker unit)”,分片保存了一个索引中所有数据的一部分。当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。

副本

可以简单理解就是某个分片的一个复制版本(一个主分片可以有多个副本)。当分片/节点发生故障时提供高可用性,需要注意的是,副本分片永远不会分配到复制它的原始/主分片所在的节点上。

 

以上是一些核心概念,下面我们会配置集群和分片的操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章