相关概念讲解
1.Cluster和node:
Cluster是对外提供搜索服务的集群, 组成这个Cluster的各个节点叫做Node, 每个Node就是Elasticsearch运行的实例, 集群Cluster是一组有这同样Cluster.name的节点, 各个node之间协同工作, 互相分享数据, 提供故障转移和拓展功能.
Node分为IndexNode(读写), DataNode(数据存储与访问, 负载均衡)等.节点之间是对等关系的(去中心化), 而弱化的Master节点只不过多了维护集群状态的功能, 每个节点之间的集群状态数据是实时同步的.如果Master节点出故障,按照预定的程序,另一台Node机器会被选举为新Master.
2.Shards:
Elasticsearch将一个完整的索引分为若干部分, 每个部分就是一个Shards, 每个Shards实际上就是一个基于Lucene的索引. Shards存储在相同或不同的Node上;Shards的数量一般在索引创建前指定, 且索引创建后不能更改(其初始配置而是可以修改的). 检索时, Elasticsearch会将查询发送到不同的Shards上并将返回结果合并, 该过程对用户透明.
3.Replicas:
Replicas是索引的冗余备份, 可用于防止数据丢失或用来做负载均衡.一般地, Elasticsearch会自动对搜索请求进行负载均衡.
4.Recovery:
在有节点加入或退出集群Cluster或故障节点重新启动, Elasticsearch会根据机器的负载情况, 对索引分片Shards进行重新分配.
5.River:
River是一个运行在Elasticsearch集群内部的插件, 主要用来从外部获取异构数据, 然后在Elasticsearch中创建索引.
常见的RabbitMQ river Plugin,MongoDB river Plugin, JDBC river Plugin等
6.Gateway:
是Elasticsearch索引数据快照的存储方式, 当Elasticsearch集群关闭再重新启动时, 就会从Gateway中读取索引数据快照.Elasticsearch支持多种类型的Gateway, 有本地文件系统(像普通的Lucene索引一样, 也是默认默认方式), 分布式文件系统(如freeds), Hadoop的HDFS和Amazon的S3云存储服务等.
Gateway与workDir的区别;Gateway存储完整的索引数据, workDir对外提供查询操作, Gateway可以是本地文件系统, 共享文件系统或者HDFS等云存储, workDir可以是内存, 本地文件系统或两者结合;
7.Discovery.zen:
代表Elasticsearch的自动发现节点机制.Zen用来做节点自动发现和Master节点选举,当Master故障后,其他节点自动选举产生新的Master(节点发现和Master选举机制支持)
8.Transport:
Transport代表Elasticsearch内部节点或集群与客户端的交互方式, 默认内部使用TCP协议交互, 同事支持Http json格式, 等传输协议(可通过插件方式集成新协议支持)
9.Index, Type, Document, Field:
Index是Elasticsearch存储数据的地方, 可以高速有效地对索引中的数据进行全文索引, 类似于关系数据库系统中的数据库;
在Index下, 一般会有多个存放数据的Type, Type类似于数据库中的数据表Table, 用来存放具体数据;
Document相当于关系数据库中的一行数据, 在一个Type中的每个Document都有一个唯一ID做区分. Document不需要固定结构, 可以有不同的字段集合
Field就相当于关系数据库中的某一列, 是Elasticsearch数据存储的最小单位.
注意: 在6.0.0或者更高版本中仅支持单Mapping。对于5.X版本中多个Mapping依旧可以使用。计划在7.0.0中完全移除Mapping.
https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html
关系型数据库 | Elasticsearch |
---|---|
数据库Database | 索引Index, 支持全文检索 |
表Table | 类型Type |
数据行Row | 文档Document, 但不需要固定结构, 不同文档可以不同字段 |
数据列Column | 字段Field |
模式Schema | 映像Mapping |
10.Mapping:
映像, Mapping定义索引下Type的字段处理规则, 如索引如何建立, 索引的数据类型, 是否保存原始索引JSON文档, 是都压缩原始JSON文档, 是都需要分词处理, 如何分词处理等
网友评论