基本概念:
Cluster
节点集群通过集群名称区分,默认名称是elasticsearch
。
Node
没有节点都有一个随机的UUID (Universally Unique Identifier)来作为节点名称。
Index
索引是指具有相似特性的文档集合。每个索引也是用名称来标示的,这个名称会用来进行文档索引、搜索、更新和删除等索引操作。(Index <-> DataBase)
- 索引的名称必需全部是小写字符
- 在单个集群中可以定义多个索引
Type
在一个Index中可以定义多个Type,一个Type是索引的一个逻辑的分类或划分。通常我们将具有一组相同字段的文档集合定义为同一个Type。(Type <-> Table)
Document
Document 我们称之为文档,它代表了一个能被索引的最小数据单元。在一个Index或者Type中,我们可以存储很多条文档。
虽然文档是物理存储在Index中的,但是实际上它必需被索引或者分配到Index中的一个Type上。
Shards & Replicas
Shard:
一个索引能存储的数据量可能超过其硬件的支持。单节点的文档存贮达到一定量级可能导致查询搜索过慢的问题。为了解决这样的问题,ES提供分片的支持,所谓分片就是将Index分为多个片。在我们创建索引的时候就可以简单的定义Shard
的个数。
每一个
Shard
都是一个独立的全功能的 'Index',bing qie并且能寄存在集群中任意的节点上。
- 分片技术允许你去水平切分和扩展内容池
- 分片技术允许你去分布式的并且平行的放置
Shard
来提升性能和吞吐量
至于
Shard
的分布式和搜索结果聚合机制完全封装在ES内部,对开发者透明。
Replicas:
在一般的网络环境或者云环境下,我们可能面临着随时崩溃的风险,我们需要提高系统的容错和崩溃处理机制。为了解决这样的问题,ES允许我们创建一个或多个Shard
的副本,称之为Replica Shard
。
- 副本不允许放置于同一个节点上,这样才能起到分片和节点容错作用
- 副本同样可以提高系统的容量及吞吐量,因为查询操作可以在所有的副本上平行的执行