elasticsearch中的概念简述
Near Realtime(NRT)
Elasticsearch接近实时。从为一个文档建立索引到可被搜索,正常情况下有1秒延迟。
Cluster
一个集群有一个唯一的名字,默认是“elasticsearch”。这个名字很重要,因为一个node仅仅能加入一个集群。
Node
默认,node在启动时被随机分配一个名字,当然也可以自定义。可以配置node加入一个指定名字的cluster。每一个节点默认加入名为"elasticsearch"的集群。一个集群可以很多节点,也可以只有一个。
Index
index是具有相似特性的document的集合(类似数据库)。每一个index被一个名字唯一标识(必须小写)。这个名字会在indexing、search、update和delete操作中使用。
Type
在一个index内,可以定义一个或多个types。Type是对index的划分(完全取决你,类似数据中的表)。
Document
document是信息被索引的基本单元(类似数据库中行)。在index/type内部,可存储许多ocument
Shards&Replicas
elasticsearch的index支持分片功能。创建一个index时,你可以设置分片的数量,每个分片本质上是完全独立的“index”,可以被存储到集群中的任意node上。
进行分片的主要原因:
-
进行水平扩展
-
方便进行分发和并行化操作,提升性能
分片分发的原理以及如何进行聚合完全由elasticsearch进行控制,对用户是透明。
在生产环境中,系统出出故障要作为一种正常状态处理。因此为应对shard/node不知某种原因造成的不可用情况,建立故障转移机制是必须的。因此Elasticsearch为index的shard建立了一个或多个副本。
副本是很重要的
-
提供高可用性,为应为shard/node的失效。分片副本不应该和主分片在同一个node上。
-
提升搜索能力,应为可以在所有的副本上并行执行。
简而言之,一个index可以被分隔成多个分片或0个。一旦被复制,每一个shards有主分片(复制开始的地方)和分片副本(主分片的副本)。分片和副本的数量可以在index被创建时进行配置,之后可以动态修改副本的数量,但不能修改分片的数量。默认,每一个index被分成5个主分片和一个副本(每个分片),这意味着,如果你的集群中至少有两个节点(主分片和分片副本不应在同一个node上),你的index将会有10个分片(5个主分片和另外5个复制分片)。
一个elasticsearch分片是一个Lucene的Index,在一个Lucene的index中document最大不能超过Integer.Max_Value-128。