一文搞懂 Elasticsearch 基本概念

  1. Cluster 和 Node

    Cluster 是对外提供搜索服务的集群,组成这个 Cluster 的各个节点叫做 Node。节点 Node 是 Elasticsearch 运行的实例;集群 Cluster 是一组有着同样 cluster.name 的节点,它们协同工作,互相分享数据,提供了故障转移和扩展的功能。Node 又可分为 IndexNode(提供读写)、DataNode(只提供数据存储和访问,负载均衡)等。节点之间是对等关系的(去中心化),而弱化的 Master 节点只不过多了维护集群状态的功能。每个节点上面的集群状态数据都是实时同步的。如果 Master 节点出故障,按照预定的程序,其他一台 Node 机器会被选举成为新的 Master。

  2. Shards

    Elasticsearch 将一个完整的索引分成若干部分,每个部分就是一个 Shards,每个 Shard 实际上就是一个基于 Lucene 的索引。Shards 存储在相同或不同的 Node 上;Shards 的数量一般在索引创建前指定,且索引创建后不能更改(其初始配置也是可以修改的)。检索时,Elasticsearch 会将查询发送到不同的 Shards 上并将返回结果合并,这个过程对用户来说是透明的。

  3. Replicas

    Replicas 是索引的冗余备份,可用于防止数据丢失或用来做负载均衡。一般地,Elasticsearch 会自动对搜索请求进行负载均衡。

  4. Recovery

    在有节点加入或退出集群 Cluster 或故障节点重新启动时,Elasticsearch 会根据机器的负载情况,对索引分片 Shards 进行重新分配。

  5. River

    River 是一个运行在 Elasticsearch 集群内部的插件,主要用来从外部获取异构数据,然后在 Elasticsearch 里创建索引。常见的有 RabbitMQ river Plugin、Twitter river Plugin、Wikipedia river Plugin 、MongoDB river Plugin 、JDBC river Plugin等。

  6. Gateway

    Gateway 是Elasticsearch 索引数据快照的存储方式,当 es 集群关闭再重新启动时,就会从 Gateway 中读取索引快照。es 支持多种类型的 Gateway,有本地文件系统(像普通的 Lucene 索引一样,这也是默认方式)、分布式文件系统(如 freeds)、Hadoop 的 HDFS 和 Amazon 的 S3 云存储服务等。

    Gateway 与 workDir的区别:Gateway 存储完整的索引数据,workDir 对外提供相应查询操作;Gateway 可以是本地文件系统、共享文件系统或 HDFS 等云存储,workDir 可以是内存、本地文件系统或者两者结合;Gateway 被假设是可靠的,持久化的数据存储,workDir 被假设是不安全的运行环境,数据允许丢失。

  7. Discovery.zen

    Discovery.zen 代表 es 的自动发现节点机制。Zen 用来实现节点自动发现和 Master 节点选举,Master 节眯负责处理节点的加入和退出以及分片 Shard 的重新分配。Master 不是固定不变的,当前 Master 出故障后,其他节点自动选举产生新的 Master。只有当节点准备就绪以后,该节点才会被通知可以被使用。在 config/elasticsearch.yml 中可以进行相应参数的设置。

    es 是一个基于 P2P 的系统,它通过广播机制寻找存在的节点,再通过多播协议来进行节点间的通信,同时也支持点对点的交互。因此,需要节点发现与 Master 选举机制。

  8. Transport

    Transport 代表 es 内部节点或集群与客户端的交互方式,默认内部是使用 TCP 协议进行交互,同时它支持 HTTP 协议(JSON 格式)、Thrift、Servlet、Memcached、ZeroMQ 等的传输协议(通过插件方式集成)

  9. 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
  1. Mapping

    Mapping 定义索引下 Type 的字段处理规则,如索引如何建立、索引数据类型、是否保存原始索引 JSON 文档、是否压缩原始 JSON 文档、是否需要分词处理、如何进行分词处理等。一般地,一个索引文件下能存储不同映像(Mapping)的类型文件(Types)。Mapping 也可通过语句删除,此时对应的类型文件下所有数据也会被删除。

你可能感兴趣的:(一文搞懂 Elasticsearch 基本概念)