参考
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/getting-started-concepts.html
近实时
Elasticsearch 是一个近乎实时的搜索平台。这意味着从您为文档编制索引到它变得可搜索之间存在轻微的延迟(通常为一秒)。
集群(Cluster)
一个集群中可以有一个或者多个节点。集群通过唯一集群名标识,默认是elasticsearch.只有相同集群名的节点才能组成一个集群,不同名称表示不同的集群。es集群是可以只有一个节点。
节点(Node)
节点是集群的一部分,存储数据并参与集群的索引和搜索功能的单个服务器。就像集群一样,节点由名称标识,默认情况下,该名称是在启动时分配给节点的随机通用唯一标识符 (UUID)。如果您不想要默认值,为了方便管理可以将节点名称命名为 host-127,host-131等等。
索引(Index)
ES中的索引就是一些数据的集合,可以类比mysql的表的概念。es的索引名必须全部是小写。
类型(Type)
类型曾经是索引的逻辑类别/分区,允许您在同一索引中存储不同类型的文档,例如,一种类型用于用户,另一种类型用于博客文章。这个概念在6.x版本已经标注过时,后续的版本可能会去掉。
文档(document)
文档是可被索引的一条记录,如:一条订单信息、一条用户信息,es是一个json文档类型数据库,尽管文档物理上存储在索引中,但文档实际上必须被索引或分配到索引内的类型。es6.x不允许一个index 中有多个type。
分片和副本(shard & replicas)
当一个索引存储了大量的数据,如1TB的数据,可能一个节点的磁盘空间不够,或者查询索引的速度变慢。为了解决这个问题,es引入了分片功能,在定义索引的时候可以指定分片的数量,每个分片本身又是一个独立的索引。
分片的优势:
- 可以水平扩容和缩容
- 可以进行分布式、并行化操作,提高性能和吞吐量
在网络或者云环境中,随时可能出现故障,导致分片或者节点因为某种原因脱机、消失。因此es提供了一种副本机制,可以将一个分片进行复制一个或者多个副本。
副本的优势:
- 在分片或者节点不可用是提供了高可用。出于这个原因,副本和其来源的主分片永远不可能在同一个节点上。
- 可以扩展搜索吞吐量。因为可以在多个副本中并行查询。
总而言之,每个索引都可以拆分为多个分片。索引也可以复制零次(意味着没有副本)或多次。复制后,每个索引将具有主分片(从中复制的原始分片)和副本分片(主分片的副本)。可以在创建索引时为每个索引定义分片和副本的数量。创建索引后,您还可以随时动态更改副本数。可以使用_shrink和_split API更改现有索引的分片数量,但是这两个API在数据量>几百G时通常很慢,导致IO很高,严重的可能会导致集群不稳定,预先计划正确的分片数量是最佳方法。
每个ES 分片都是一个独立、完整的lucene索引,一个lucene索引是有索引最大文档数上限:2,147,483,519 (= Integer.MAX_VALUE - 128) 。为什么是这个数?https://issues.apache.org/jira/browse/LUCENE-5843