Elasticsearch 简介
- Elasticsearch 是一个高可扩展的,全文搜索分析引擎。
- 可以近实时地存储、搜索以及分析海量数据。
- 通常作为底层引擎为应用提供复杂搜索功能。
-
应用:
- 搜索功能
- 自动提示
- 聚合分析日志
- 等等 …
Near Realtime(NRT,近实时)
从存入到可搜索,只有轻微的延迟(约 1 秒)
Cluster(集群)
集群是一个或多个节点(服务器)的集合。整个集群共同保存数据,并提供跨节点的联合索引与搜索功能。<br/>
集群由唯一名称标识,Elasticsearch 的默认集群名称为“elasticsearch”。
Node(节点)
节点作为集群的一个服务器,提供存储数据,集群的索引与搜索功能。<br/>
Elasticsearch 节点名称默认为一个随机的 UUID 的前 7 位。
Index(索引)
索引是相似特征的文档的集合。例如,你可以同时拥有用户数据索引、订单数据索引以及商品目录索引。<br/>
索引由名称标识(全小写),通过名称引用索引对索引中的文档进行索引、搜索、更新、删除等操作。
Type(类型)
已弃用,在将来更高版本中会删除。<br/>
类型作为索引的逻辑分区,允许同一个索引中存储不同类型的文档,例如用户类型、博客类型等。
Document(文档)
文档是 Elasticsearch 的基本信息单元,例如,一个文档表示产品,一个文档表示客户 …
Shards(分片)与 Replicas(副本)
单节点受硬盘空间的限制,以及查询速度会随着数据增加而变慢。<br/>
Elasticsearch 将索引拆分为多个分片,每个分片都是一个功能齐全且独立的索引,存储到不同的节点上。有两个好处:
- 可以水平切割 / 收缩容量。(针对单节点受硬盘空间的限制
- 允许在多个节点上并行操作,从而提高性能和吞吐量。(针对查询速度会随着数据增加而变慢
由于在网络 / 云环境中,随时可能发生故障:例如分片 / 节点不知怎么下线了或者因任何原因消失。<br/>
Elasticsearch 允许将分片的一个或多个副本,制作成副本分片或简称为副本。使用副本有两个理由:
- 在分片 / 节点故障时提供高可用。注意,副本分片不会与原分片存放到同一个节点上。
- 可以扩展搜索量 / 吞吐量,因为可以在所有副本是并行搜索。
总而言之,一个索引可以被拆为多个分片,一个分片可以有 0 到多个副本分片。<br/>
Elasticsearch 默认 5 个分片,1 份副本,一共 10 个分片(5 个主分片,5 个副本分片)。