大家好,我是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核心技术与实战

作者:周旭龙

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

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

Elastic学习之旅 (3) ES必备基本概念的更多相关文章

  1. 我的Android学习之旅(转)

    去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...

  2. SSIS 学习之旅 FTP文件传输-脚本任务

    这一章主要讲解一下用脚本怎么把CSV文件抛送到FTP服务器上 设计:   通过Demon库的Users表数据生成CSV文件.   生成后的CSV文件抛送到FTP指定目录下. 控件的使用这里就不做详细讲 ...

  3. SSIS 学习之旅 FTP文件传输-FTP任务

    这一章主要讲解一下FTP控件. 设计:   通过Demon库的Users表数据生成CSV文件.   生成后的CSV文件抛送到FTP指定目录下. 其他控件的使用这里就不做详细讲解了.大家如果有不懂得可以 ...

  4. SSIS 学习之旅 数据同步

    这一章 别人也有写过但是我觉得还是写写比较好.数据同步其实就是想仿照 数据库的发布订阅功能 第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上) 第二章:SSIS 学习之旅 第一个SSIS 示 ...

  5. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  6. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  7. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  8. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  9. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

  10. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

随机推荐

  1. php代码审计实战-开源项目Materialized CMS漏洞检测

    一.下载Materialized CMS 链接地址:https://sourceforge.net/projects/materialized-cms/files/latest/download 二. ...

  2. FireDAC开发DataSnap应用系统【2】-使用TFDJSONDatasets功能

    类别 说明 TFDJSONDatasets FireDAC使用JSONDataSet,其中可包括多个DataSet对象 TFDJSONDataSetsWriter 把TDataSet写入TFDJSON ...

  3. 卸载重装vscode

    最近工作需要长期用到python,但我的老电脑又实在拉不起pycharm那配置,干脆就用vscode了,但本来我的vscode是用来写c/c++的,安装配置一通乱搞,现在也不知道怎么配置回来了. 干脆 ...

  4. 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列

    探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 目录 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 0x00 概述 0x0 ...

  5. Mouse Down鼠标操作指令的用法

    如下图 暂无评论的按钮在整页下方,需要拖动页面才会显示出这个按钮,否则不可点击 Mouse Down  提供拖动页面的能提 这个方法因selenium2library和AutoItLibrary 都有 ...

  6. 科研新体验:刘同学深度试用ADTF软件反馈揭晓!

    一.前言 作为一名高校的科研工作者,在高校的科研工作中,经常需要处理各种复杂的数据流,尤其是视频采集和处理的工作,对数据的实时性和精度要求非常高,我首次试用ADTF时,主要负责开发一个集成FFmpeg ...

  7. php和thinkphp实现页面调转

    1.原生PHP https://www.cnblogs.com/jade640/p/7118565.html 2.thinkPHP跳转方法及重定向 https://blog.csdn.net/Wake ...

  8. excel使用VBA连接access

    需要的引用: 下面的代码涉及excel对access数据库的增删改查,可以按照需要查找使用 1 '远程链接模块 2 Option Explicit 3 Dim con As New ADODB.Con ...

  9. 解决 Dify 部署中 Podman WSL 容器文件权限问题

    解决 Dify 部署中 Podman WSL 容器文件权限问题 在使用 Podman 进行 Dify 部署时,遇到了一个关键问题:启动服务时出现 initdb: error: could not ch ...

  10. final year project:C++手写numpy并移植到RISC-V上——纪念我在中科院实习的日子

      我毕设做的项目是用C++去实现一个Numpy,因为我是大数据专业,Numpy又是跟数据分析有关的工具,所以我打算自己动手去实现一个小型的Numpy,目前代码规模大概在六千多行左右,并且可以成功移植 ...