- elasticsearch 基本概念
es是基于lucene构建的分布式RESTful风格的搜索和数据分析引擎
A. 数据结构
es | sql |
---|---|
索引(index) | 数据库(database) |
分片(shard) | 分片(shard) |
映射(mapping) | 表结构定义 |
字段(field) | 列(column) |
文档(document) | 行(rows) |
ps:mapping定义了数据类型,描述记录的字段;es将索引拆分为多个分片,以便分布在多个节点。
B. 名词解释
- [ 1] 集群(Cluster)
由一到多个节点组成,共同保存整个数据,提供跨节点联合索引和搜索,各集群有唯一集群名称,集群名是节点之间唯一识别集群的标识。 - [ 2] 节点 (Node)
单个es实例,存储数据,参与集群索引与搜索,默认节点名是节点启动时的唯一标识。
多个节点加入集群,es版本必须一致,集群名必须一致。 - [ 3] 索引 (Index)
index是具有类似特征的文档集合,es内部用lucene将数据写入索引或从索引中检索数据
es索引可能由一个或多个lucene索引构成
一个lucene索引在es中成为 shard - [ 4] 类型 (Type)
type用于索引的逻辑分区,可在同一索引中存储不同类型的文档
当前版本一个index不能创建多个type,之后的版本删除type - [ 5] 文档 (Document)
被索引的基本信息单元,由字段(字段名:字段值)组成 - [ 6] 映射 (Mapping)
每个index都有一个mapping,定义字段的数据类型
mapping可事先定义,或在第一次存储文档时自动识别 - [ 7] 分片 (Shard) 和 副本(Replica)
es将数据散布到多个物理lucene索引(分片)
分片:允许水平分割扩展数据;允许跨分片分配和并行化操作
副本是对分片的复制。提高可用性,副本分片不与主分片在同一节点;可扩展搜索量,提高并发量,搜索可在所有副本上并行执行。
索引可拆为多个分片,分片可复制0或多次。
创建索引时可定义分片数和副本数;创建索引后,可动态更改副本数。最好至少有一个副本,防止数据丢失并具有高可用性,典型扩展搜索性能方法是增加副本数
节点数不低于最大副本数。
最好预先规划好正确分片数,修改分片数使用_shrink和_split的API
每个分片最多包含约20亿个文档(Integer.MAX_VALUE-128)