ElasticSearch结构
2021/7/19 23:08:08
本文主要是介绍ElasticSearch结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Elasticsearch是一种文档性存储结构,由上到下依次可分为:
cluster(集群)→node(节点)→shard(分片)/replica(副本)→index(索引)→type(类型)→document(文档)→field(属性)
一个Elasticsearch集群可以 包含多个节点,每个节点包含多个分片,每个分片包含多个索引 ,相应的每个索引可以包含多个类型 。 这些不同的类型存储着多个文档 ,每个文档又有 多个属性 。
索引 这个词在 Elasticsearch 语境中有多种含义, 这里有必要做一些说明:
索引(名词):
如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。
索引(动词):
索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的
INSERT
关键词,除了文档已存在时,新文档会替换旧文档情况之外。倒排索引:
关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch 和 Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。
-
集群
ES可以作为一个独立的单个搜索服务器,不过为了处理大数据集,实现容错和高可用,ES可以运行在多台相互合作的服务器上。这些服务器的集合称为集群。
-
节点
运行了单个实例的ES主机称为节点,他是集群的一个成员,可以参与数据存储、集群索引及搜索工作。节点通过为其配置的集群名称来确定加入的集群。
-
分片
ES的分片机制,可以将一个索引内部的数据分布的存储在多个节点上。它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每个物理的Lucene索引称为分片。
这样可以把一个大的索引拆分成多分,分不到不同的节点上。减低单个服务器的压力。同时,构成分布式搜索,提高整体检索的效率。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
-
副本
副本是一个分片的精确复制,每个分片可以有多个副本。副本的作用一是提高系统的容错性,当某个分片损坏或者丢失时,可以从副本中回复。二是提高ES的查询效率,ES会自动对搜索请求进行负载均衡。
数据架构
-
索引
ES将数据存储于索引中,索引时具有类似特性的文档的集合。
索引相当于关系型数据库中的数据库。
-
类型
类型是索引内部的逻辑分区,一个索引内部可以定义一个或多个类型。
类型可类比于关系型数据库中的表。
PS:ES5.0中,一个索引中可定义多个类型;ES6.0以上只能定义一个;ES7.0中开始弃用,但一个索引中还是可以定义一个类型。ES8.0将完全删除类型。
-
文档
文档是Lucene索引和搜索的原子单位,它是包含一个或多个域的容器,基于JSON格式进行表示。
可类比于关系型数据库中的行。
-
属性
属性是对文档中每个值的描述。
相当于关系行数据库中的列。
这篇关于ElasticSearch结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20获取apk的md5值有哪些方法?-icode9专业技术文章分享
- 2024-11-20xml报文没有传 IdentCode ,为什么正常解析没报错呢?-icode9专业技术文章分享
- 2024-11-20如何知道代码有没有进行 Schema 验证?-icode9专业技术文章分享
- 2024-11-20Mycat教程:新手快速入门指南
- 2024-11-20WebSocket入门:轻松掌握WebSocket基础
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享