-
Cluster 和 Node
Cluster 是对外提供搜索服务的集群,组成这个 Cluster 的各个节点叫做 Node。节点 Node 是 Elasticsearch 运行的实例;集群 Cluster 是一组有着同样 cluster.name 的节点,它们协同工作,互相分享数据,提供了故障转移和扩展的功能。Node 又可分为 IndexNode(提供读写)、DataNode(只提供数据存储和访问,负载均衡)等。节点之间是对等关系的(去中心化),而弱化的 Master 节点只不过多了维护集群状态的功能。每个节点上面的集群状态数据都是实时同步的。如果 Master 节点出故障,按照预定的程序,其他一台 Node 机器会被选举成为新的 Master。
-
Shards
Elasticsearch 将一个完整的索引分成若干部分,每个部分就是一个 Shards,每个 Shard 实际上就是一个基于 Lucene 的索引。Shards 存储在相同或不同的 Node 上;Shards 的数量一般在索引创建前指定,且索引创建后不能更改(其初始配置也是可以修改的)。检索时,Elasticsearch 会将查询发送到不同的 Shards 上并将返回结果合并,这个过程对用户来说是透明的。
-
Replicas
Replicas 是索引的冗余备份,可用于防止数据丢失或用来做负载均衡。一般地,Elasticsearch 会自动对搜索请求进行负载均衡。
-
Recovery
在有节点加入或退出集群 Cluster 或故障节点重新启动时,Elasticsearch 会根据机器的负载情况,对索引分片 Shards 进行重新分配。
-
River
River 是一个运行在 Elasticsearch 集群内部的插件,主要用来从外部获取异构数据,然后在 Elasticsearch 里创建索引。常见的有 RabbitMQ river Plugin、Twitter river Plugin、Wikipedia river Plugin 、MongoDB river Plugin 、JDBC river Plugin等。
-
Gateway
Gateway 是Elasticsearch 索引数据快照的存储方式,当 es 集群关闭再重新启动时,就会从 Gateway 中读取索引快照。es 支持多种类型的 Gateway,有本地文件系统(像普通的 Lucene 索引一样,这也是默认方式)、分布式文件系统(如 freeds)、Hadoop 的 HDFS 和 Amazon 的 S3 云存储服务等。
Gateway 与 workDir的区别:Gateway 存储完整的索引数据,workDir 对外提供相应查询操作;Gateway 可以是本地文件系统、共享文件系统或 HDFS 等云存储,workDir 可以是内存、本地文件系统或者两者结合;Gateway 被假设是可靠的,持久化的数据存储,workDir 被假设是不安全的运行环境,数据允许丢失。
-
Discovery.zen
Discovery.zen 代表 es 的自动发现节点机制。Zen 用来实现节点自动发现和 Master 节点选举,Master 节眯负责处理节点的加入和退出以及分片 Shard 的重新分配。Master 不是固定不变的,当前 Master 出故障后,其他节点自动选举产生新的 Master。只有当节点准备就绪以后,该节点才会被通知可以被使用。在 config/elasticsearch.yml 中可以进行相应参数的设置。
es 是一个基于 P2P 的系统,它通过广播机制寻找存在的节点,再通过多播协议来进行节点间的通信,同时也支持点对点的交互。因此,需要节点发现与 Master 选举机制。
-
Transport
Transport 代表 es 内部节点或集群与客户端的交互方式,默认内部是使用 TCP 协议进行交互,同时它支持 HTTP 协议(JSON 格式)、Thrift、Servlet、Memcached、ZeroMQ 等的传输协议(通过插件方式集成)
-
Index、Type、Document、Field
- Index 是 es 存储数据的地方,可以快速高效地对索引中的数据进行全文索引,类似于 RDBMS 数据中的 Database。
- Type 类似于 Database 中的 Table,用来存放具体数据,在 Index 下一般会有多个存放数据的 Type。
- Document 是类似关系数据库中的一行数据,在一个 Type 里的每一个 Document 都有一个唯一的 ID 作为区分,这里与 RDBMS 不同的是,Document 不需要有固定的结构,不同文档可以具有不同的字段集合;
- Field 类似关系数据库的某一列,是 es 数据存储的最小单位。
关系型数据库 | Elasticsearch
---|---
数据库 Database | 索引 Index,支持全文检索
表 Table | 类型 Type
数据行 Row | 文档 Document,但不需要固定结构,不同文档可以具有不同字段集合
数据列 Column | 字段 Field
模型 Schema | 映像 Mapping
-
Mapping
Mapping 定义索引下 Type 的字段处理规则,如索引如何建立、索引数据类型、是否保存原始索引 JSON 文档、是否压缩原始 JSON 文档、是否需要分词处理、如何进行分词处理等。一般地,一个索引文件下能存储不同映像(Mapping)的类型文件(Types)。Mapping 也可通过语句删除,此时对应的类型文件下所有数据也会被删除。
网友评论