IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Elasticsearch 基本概念 -> 正文阅读

[大数据]Elasticsearch 基本概念

Elasticsearch 基本概念

前言

这篇文章主要介绍一下 Elasticsearch 里面的基本概念,包括索引、文档、REST API、集群、节点、分片、副本。

基本概念

传统数据库和 ElasticSearch 的区别

数据库(RDBMS)Elasticsearch
TableIndex(Type)
RowDocument
ColumnFiled
SchemaMapping
SQLDSL
  1. Document(文档):是所有可搜索数据的最小单位,文档会被序列化成 JSON 格式,每个文档都有一个唯一的ID,这个ID可以自己指定,也可以自动生成。
  2. 元数据:用于标注文档的相关信息
    在这里插入图片描述
  • _index:文档所属的索引名
  • _type:文档所属的类型名,7.0以后统一只能指定一种类型_doc
  • _id:文档唯一的 id
  • _source:文档的原始 Json 数据
  • _score:相关性打分
  • _version:上图没有显示出来,这个版本号代表文档的版本信息
  1. Index:索引是文档的容器,是一类文档的集合。名词:一个 ES 集群中,可以创建很多不同的索引(B树索引)。动词:保存一个文档到 ES 的过程也叫索引,比如创建一个倒排索引的过程。
    在这里插入图片描述
  • 索引中的 Mapping 定义了文档字段的类型、Settings 定义了不同的数据分布,分布在几个分片等信息。
  • Index 是逻辑空间的概念,每个索引都有自己的 Mapping 定义,用于定义包含的文档的字段名和字段类型。
  • Shard 是物理空间的概念,索引中的数据分散在分片上
  1. Type:7.0以前,一个 Index 可以设置多个 Type。7.0开始,一个索引只能创建一个 Type - “_doc”
  2. REST API:可以很容易被各种语言调用。例如:PUT products 创建 Index,GET movies/_mapping 查看 mapping
  3. 节点:节点是一个 Elasticsearch 的实例,本质就是一个 Java 进程,一台机器可以运行多个 Elasticsearch 进程实例,生产上建议一台机器只运行一个实例;每一个节点都有名字,可以通过配置文件指定,也可以启动时用 -E node.name=node1指定;节点在启动后,会分配一个 UID,保存在 data 目录下。开发环境中一个节点可以承担多种角色,生产中,应该设置单一的角色节点:
节点类型配置参数默认值
master eligiblenode.mastertrue
datanode.datatrue
ingestnode.ingesttrue
coordinating only/每个节点默认都是,设置其他类型全部为 false就可以指定为 coordinating 节点
machine learningnode.mltrue(需要 enable x-pack)
  • 每个节点启动后,默认就是 Master eligible 节点,可以参加选主流程,第一个节点启动时,会将自己选举成 Master 节点,可通过 node.master:fasle设置为禁用。
  • 每个节点上都保存了集群的状态,只有 Master 节点才能修改集群状态(Cluster State)信息,集群信息包括:所有节点信息;所有的索引和其相关的 Mapping 和 Setting 信息;分片的路由信息。
  • Data Node:可以保存数据的节点,为数据扩展起到了重要的作用。
  • Coordinating Node:负责接受 Client 的请求,将请求分发到合适的节点,最后把结果汇到一起。每个节点默认都起到了 Coordinating Node 的职责。
  • Hot & Warm Node:不同硬件配置的 Data Node,用来实现 Hot & Warm 架构,降低集群部署成本。
  • Machine Learning Node:负责跑机器学习的 JOB,用来做异常检测。
  1. 分片(Primary Shard & Replica Shard):生产中对分片的设定,需要提前做好容量规划。如果分片数设置过小,会导致后续无法增加节点实现水平扩展。如果分片数设置过大,会影响搜索结果相关性打分,影响统计结果的准确性,同时导致资源浪费,影响性能。
  • 主分片(Primary Shard):用来解决数据水平扩展的问题,通过主分片,可以将数据分布到集群内的所有节点上。一个分片是一个运行的 Lucene 的实例,主分片数在索引创建时指定,后续不允许修改,如果要修改,需要 Reindex。
  • 副本分片(Replica Shard):用来解决数据高可用问题,是主分片的拷贝。副本分片数,可以动态调整,增加副本数,可以一定程序上提高服务的可用性。

总结

这里介绍了 Elasticsearch 的基本概念,一个 Cluster 包含多个 Node,一个 Node 包含多个 Shard,每个 Shard 上面有多个 index,一个 index 又可以分布在多个 Shard 上(索引是逻辑空间,分片是物理空间)。一个 index 可以有多个 Document。下图可能更加清楚的了解各个概念之间的关系。
在这里插入图片描述
这是一个本地的 Cluster (集群),有两个 Node (节点,表格中每一行表示一个节点),12个 Shard (分片,绿色的小框),6个 indices (索引,表格中每一列表示,每个索引分布在不同的分片中),2万多个文档(在图中看到只有8个绿色小框,但是上面写的有12个 Shard,这是因为我之前建了索引删掉了,好像分片不会减少的原因)。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:53:02  更:2021-07-28 07:55:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 5:42:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码