前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elastic学习之旅 (3) ES必备基本概念

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

作者头像
Edison Zhou
发布2024-01-26 10:00:57
870
发布2024-01-26 10:00:57
举报
文章被收录于专栏:EdisonTalkEdisonTalk

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实例构成。

代码语言:javascript
复制
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核心技术与实战

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES都有哪些基本概念
  • 索引
  • 文档
  • REST API
  • 集群 / 节点
  • 分片 / 副本
  • 小结
  • 参考资料
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档