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核心技术与实战》

Elastic学习之旅 (3) ES必备基本概念的更多相关文章
- 我的Android学习之旅(转)
去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...
- SSIS 学习之旅 FTP文件传输-脚本任务
这一章主要讲解一下用脚本怎么把CSV文件抛送到FTP服务器上 设计: 通过Demon库的Users表数据生成CSV文件. 生成后的CSV文件抛送到FTP指定目录下. 控件的使用这里就不做详细讲 ...
- SSIS 学习之旅 FTP文件传输-FTP任务
这一章主要讲解一下FTP控件. 设计: 通过Demon库的Users表数据生成CSV文件. 生成后的CSV文件抛送到FTP指定目录下. 其他控件的使用这里就不做详细讲解了.大家如果有不懂得可以 ...
- SSIS 学习之旅 数据同步
这一章 别人也有写过但是我觉得还是写写比较好.数据同步其实就是想仿照 数据库的发布订阅功能 第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上) 第二章:SSIS 学习之旅 第一个SSIS 示 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—WCF服务部署到IIS7.5(九)
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
随机推荐
- 【Linux】2.2 Linux安装
安装 vm 和 Centos 学习 Linux 需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个 Centos 系统来学习. 先安装 virtual machine ,vm12 再安装 L ...
- 新建一个空的 ASP.NET Core Web Application
前言 Visual Studio 2017 下操作 1. 新建项目 2. 新建空的 ASP.NET Core Web Application 确定后,需要一小点的时间等待依赖库载入... 3. 新建完 ...
- Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户
需求: 拿到了 boss 的服务器账号 ssh boss@172.16.1.100,需要登录 boss 的账号,然后为自己创建一个账号,实现 ssh <user_name>@172.16. ...
- C# 工业视觉开发必刷20道 Halcon 面试题
前言 随着工业4.0的深入推进,越来越多的企业开始重视智能制造和自动化生产.在这个背景下,对具备C#和Halcon开发经验的专业人才需求也日益增长. 为了帮助广大 C#工业视觉开发的朋友更好地备战面试 ...
- 将Particle转成UGUI
在unity官方论坛看到的一个解决方案,可以将Particle直接转换成CanvasRenderer元素显示.新建一个UIParticleSystem.cs脚本,将以下代码复制进去: using Un ...
- CocoaPods+Gitee 制作私有库过程以及错误总结
前言 最近由于要做组件化,所以就顺便看了看私有库的制作,整体上制作的过程是比较简单的,但有一些点你注意到的话会在制作过程会少去很多的麻烦,在网上搜的制作过程的文章是一大把,但当你真的遇到一些问题的时候 ...
- 康谋方案 | AVM合成数据仿真验证方案
随着自动驾驶技术的快速发展,仿真软件在开发过程中扮演着越来越重要的角色.仿真传感器与环境不仅能够加速算法验证,还能在安全可控的条件下进行复杂场景的重复测试. 本文将分享如何利用自动驾驶仿真软件配置仿真 ...
- 解决React Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
问题 当我使用如下方式调用组件子组件UploadModal并且绑定Ref时React报错"Warning: Function components cannot be given refs. ...
- win7激活,2023年亲测可用 ,win7激活密钥,激活码
还在找激活密钥,激活win7吗,试了无数个都激活不了? 直接用这个工具激活吧,亲测可用,用过的都知道. WIN7Chew-WGA0.9.exe 阿里云盘:https://www.aliyundrive ...
- Bagging、Boosting、Stacking的原理
Bagging.Boosting.Stacking是常见集成学习的形式,它们都是通过对多个学习器进行有机组合,达到比单个学习器性能更好的目标. 一.Bagging 1.算法概述 Bagging ...