1.基本框架:
外部架构:
内部架构:
Restful style API :通过Restful 方式实现api交互编程/访问es集群
Java(Netty) : 通信模块,数据传输的Java框架
Transport: 传输模块,包括 Thrift、Memcached、Http等协议
JMX : 监控系统的运行状态或管理系统。
Discovery :发现模块,负责集群的master节点发现。比如某个节点突然离开或进来的情况,进行一个分片重新分片等。这里有个发现机制。发现机制默认的实现方式是单播和多播的形式,即Zen,同时也支持点对点的实现。另外一种是以插件的形式,即EC2。
Scripting:脚本语言。包括mvel,js,python等
Search Module/Index Module : 搜索和索引模块
Mapping :映射,非常类似于静态语言中的数据类型。比如我们声明一个int类型的变量,那以后这个变量只能存储int类型的数据。Mapping不仅是告诉ElasticSearch,哪个字段是哪种类型。还能告诉ElasticSearch如何来索引数据,以及数据是否被索引到等。
3rd Plugins: 第三方插件
Distrubuted Luncene Directory : Lucene 里的一些列索引文件组成的目录。负责管理这些索引文件。包括数据的读取、写入,以及添加和合并等。
Gateway :存储索引数据。
2. elastic search VS 关系型数据库
- 基于lucene全文检索引擎工具包,半成品专注于搜索底层建设,类比于汽车发动机,elasticsearch专注于企业应用,类比于汽车
- 特点:分布式,全文搜索,实时搜索。
3.相关概念
节点/主节点/集群:每一个运行实例称为节点,多个运行实例组成集群,集群有动态选取出来的主节点,若选取失败,则会选取新的节点作为主节点。集群名称相同的节点自动组成一个集群。
分片:为了实现容错,ElasticSearch 会把查询文档集合分解为多个小的索引,每个小的索引称为分片。
分片备份: 每个分片是独立的Lucene索引,分别由0到多个副本,即分片的完整复制。
分片的好处:
- 如果索引数据量很大,会造成搜索速度及硬盘的瓶颈。分片可以分摊压力。
- 允许用户进行水平的扩展和拆分。
- 允许分布式操作,提高搜索及其他操作的效率。
备份的好处:
- 一个分片失败或者下线,备份的分片可以代替其工作,提高可用性。
- 备份的分片也可以执行搜索操作,分摊了搜索的压力。