Elasticsearch介绍
Elasticsearch是开源的实时分布式搜索分析引擎,内部使用Lucene做索引与搜索。本章将从基本概念、流程分析等方面对Elasticsearch组件做简单的介绍。
集群结构
Elasticsearch集群方案由EsMaster、EsClient、EsNode1、EsNode2、EsNode3进程组成。各模块说明如表1所示。
名称 |
说明 |
---|---|
Client |
Client使用HTTP或HTTPS协议同Elasticsearch集群中的EsMaster以及各EsNode实例进程进行通信,进行分布式索引和分布式搜索操作。 |
EsMaster |
EsMaster为Elasticsearch的主节点,负责集群的管理,主要是集群相关的操作,如决定分片的分配、采集集群节点等。 |
EsNode1-3 |
EsNode1-3为Elasticsearch的数据节点,主要是存储索引数据,对文档进行增删改查、聚合等操作。 |
EsClient |
EsClient为Elasticsearch的协调节点,只处理路由请求、搜索及分发索引等操作。自身不存储数据,也不管理集群。 |
ZooKeeper集群 |
ZooKeeper为Elasticsearch集群中各进程提供心跳感应机制。 |
基本概念
- Index:即索引,是Elasticsearch中一个逻辑命名空间,指向一个或多个分片,内部Apache Lucene实现索引中数据的读写。索引与关系数据库实例Database相当。一个Elasticsearch实例可以包含多个索引。
- Type:文档类型,文档类型使得同一个索引中在存储结构不同的文档时,只需要依据文档类型就可以找到对应的参数映射信息,方便文档的存储。相当于数据库中的Table(数据表)。一个索引对应一个文档类型。
- Document:文档,是可以被索引的基本单位,特指最顶层结构或根对象序列化成的JSON数据。相当于数据库中的行。一个类型包含多个文档。
- Mapping:映射,用来约束字段的类型,可以根据数据自动创建。相当于数据库中的Shema。
- Field:字段,组成文档的最小单位。相当于数据库中的Column。每个文档包含多个字段。
- EsMaster:主节点,可以临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,也不接收请求。在流量增长时,该主节点不会成为集群的瓶颈。
- EsNode:Elasticsearch节点,一个节点就是一个Elasticsearch实例。
- EsClient:Elasticsearch节点,该节点只能路由请求,处理搜索减少阶段和分发批量索引。其自身不进行数据存储,也没有管理集群的能力。
- Shard:分片,Elasticsearch中最小级别的工作单元,文档存储在分片中,并且在分片中被索引。
- Primary Shard:主分片,索引中的每个文档属于一个单独的主分片,主分片的数量决定了索引最多能存储多少数据。
- Replica Shard:复制分片,它是主分片的一个副本,可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的Shard取回文档。
父主题: 调优概述