Elasticsearch是一个开源高拓展性的全文检索引擎。
词典:
1、实时性(near real time)。存入数据,随后即可查询(延迟不超过1s)。
2、集群(cluster)。一个或多个提供存储和跨界查询的节点组成的集合。
集群需要一个唯一名称,默认为elasticsearch。集群可以只有唯一的节点。
一个集群的节点数没有限制。
3、节点(node)。节点就是集群中一部分的服务。
在启动时会默认有一个UUID的唯一标识名。可以自定义节点的唯一标识名。
节点通过集群名加入一个集群,默认加入到elasticsearch集群中。启动多个节点,它们会自动根据集群名组建成新的集群。
启动一个节点,即成为一个单节点集群。
4、索引(index)。具有共同数据特性的文档的集合,可以理解为关系型数据库中的一个库。
索引需要指定名称,且名称中字母必须为小写,可以有数字和横线。
5、类型(type)。类型是索引的更精细分类和拆分,可以理解为关系型数据库中的一张表。
类型定义了文档的共有字段。
6、文档(document)。文档是信息的基本单位,可以理解为关系型数据库中的一条记录。
文档以json格式存储一条记录。
index->type->document 三级结构必须完整,即存入一条document必须指定type和index。
7、碎片和副本(Shards & Replicas)。碎片是索引拆解出来的一部分。
一个索引可能存储了大量数据,导致无法响应相关操作。为此,Elasticsearch提供了拆解功能。在创建索引的时候可以指定拆解为n个碎片。每个碎片可以看作具有完整功能的独立“索引”。——碎片支持横向切割内容。
碎片可以分布在集群中任意节点上。——碎片支持分布式并行操作。
副本是对于碎片的拷贝,用于提供容灾。
副本和源碎片不在一个节点上。
副本提高了查询操作吞吐量。
在索引创建时,可以指定分割的碎片数量以及副本数量。在完成创建之后,副本数量可以再次修改,而碎片数量是不可以的。
默认一个索引分割为5个碎片和一套副本(也就是5个副本碎片)。
说明:每个elasticsearch的碎片其实都是一个lucese的索引。有大小限制。可以通过 _cat/shards 来监视碎片大小情况。