My Github

Elastic学习之旅 (3) ES必备基本概念

大家好,我是Edison。

上一篇:快速安装ELK

ES都有哪些基本概念

在学习ES时,需要掌握一些必备概念,有了这些基本概念,后续的学习才会轻松。我们可以从下图中了解,ES都有哪些基本概念。

从上图可以知道,ES存在以下的一些核心基本概念:

  • Index索引

    • Document文档

  • Node节点

    • Shard分片(Primary Shard / Replica Shard)

索引

Index 索引可以理解为关系型数据库中的Table,它是一类文档的集合。又或者可以理解为MongoDB中的Collection,也是一类文档的集合。刚好,ES中也有文档的概念。

下图中的movies就是一个index,这是我们上次导入的9700多个文档的集合名字。

快速理解:索引是文档的容器,是一类文档的集合

文档

和MongoDB一样,也有文档的概念,它是ES中所有可搜索数据的最小单位,它也支持数组 和 嵌套。

ES中的文档都会被序列化为JSON格式进行保存,每个文档都有一个Unique ID,这个Unique ID可以由我们自定义生成,也可以通过ES自动生成。

此外,每个文档都有一些元数据,用于标注该文档的相关信息。

现在,我们来和关系型数据的基本概念对比一下,是不是和当时学MongoDB时差不多啊:

REST API

ES提供了REST API,可以很容易地被各种开发语言开发的客户端应用程序进行调用。

最常见的API如操作Index的:创建Index 和 查看所有Index。

集群 / 节点

我们知道了,ES采用了分布式架构,可以做到存储的水平扩容,还提高了系统的可用性。

不同的ES节点可以构成一个集群,不同的集群可以通过不同的名字来区分,比如在上一节我们进行docker部署时,就指定了一个集群名字为“edisontalk”,这个集群由两个ES实例构成。

elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_01
    environment:
      - cluster.name=edisontalk
      - node.name=es7_01
      ......

ES节点从本质上来说,就是一个Java进程,每一个节点都有名字,比如上面我们定义了节点名字为“es7_01”。

当多个节点构成集群后,会选出一个Master节点,其他节点则为Data节点只保存数据,和其他分布式主从结构系统类似,Master节点维护了一个集群中的必要的信息,对于ES来说,包括了:所有的节点信息、所有的索引和相关的Mapping和Setting信息、分片的路由信息等。

ES节点从本质上来说,就是一个Java进程,每一个节点都有名字,比如上面我们定义了节点名字为“es7_01”。

当多个节点构成集群后,会选出一个Master节点,其他节点则为Data节点只保存数据,和其他分布式主从结构系统类似,Master节点维护了一个集群中的必要的信息,对于ES来说,包括了:所有的节点信息、所有的索引和相关的Mapping和Setting信息、分片的路由信息等。

分片 / 副本

和MongoDB一样,ES也有分片的概念,它主要用于解决数据水平扩展的问题。只不过,在ES中,还区分了主分片 和 副本分片的概念。

通过主分片,可以将数据分布到集群内的所有节点之上,一个分片是一个运行的Lucene实例,索引的一部分或全部数据。

副本分片,则是主分片的拷贝,主要用于解决数据高可用的问题。比如,通过增加副本分片数量,可以让数据在集群中不同节点上都有备份。

我们可以通过 _cluster/health 查询一个集群的健康状况:

通过status=green,我们知道该集群主分片和副本都正常分配了,属于健康状态。

但如果看到status=yellow 或 red,则代表住分片正常分配但有副本未能正常分配,或者有主分片未能分配(比如服务器的磁盘使用量>=85%的时候创建一个新的Index)。

同时,我们还可以从返回的JSON数据知道集群的节点数 和 分片数。

此外,我们可以通过 _cat/nodes 了解集群的节点基本信息:

小结

本篇,我们了解了ElasticSearch的一些必备基础概念,如索引、文档、集群、节点、分片与副本等。有了这些基本概念,我们可以知道ElasticSearch和关系型数据库的差别。

下一篇,我们就开始ElasticSearch的文档CRUD操作!

参考资料

极客时间,阮一鸣,《ElasticSearch核心技术与实战

 

posted @ 2024-01-25 08:30  EdisonZhou  阅读(101)  评论(0编辑  收藏  举报