1. Near Realtime(NRT): 近实时,俩个意思,从写入数据到数据可以被搜索到有一个小延迟(大概一秒);基于es执行搜索和分析可以达到秒级
2. Cluster: 集群,包含多个节点,每个节点属于那个集群是通过一个配置(集群的名称,默认是elasticsearch)来决定的
3. Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(运维管理)
4. Document: 文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构来表示,每个index下的type中,都可以存储多个document,一个document里面有多个field,每个field就是一个数据字段
product document
{
"product_id":"1",
"product_name":"茶道",
"product_desc":"提神",
"category_id":"1"
}
5. Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有名称
比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
6. Type:类型,每个索引里都有一个多个type,type是index中的一个逻辑分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type,
商品index,里面存放了所有的商品数据,商品document
但是商品分很多种类,每个种类的document的field可能不太一样,比如说电器商品,可能还包含一些诸如售后时间范围的特殊filed;生鲜商品还包含生鲜保质期等特殊filed.
type.日化商品type,电器商品type,生鲜商品type
日化商品type:product_id,product_name,produce_desc,category_id,category_name
电器商品type:product_id,product_name,produce_desc,category_id,category_name,service_period
生鲜商品type:product_id,product_name,produce_desc,category_id,category_name,eat_period
每个type里面都包含一堆document
{
"product_id" : "2“,
"product_name" : "Mac 笔记本“,
"product_desc" : "4K高清“,
"category_id" : "3“,
"category_name" : "电器“,
”service_period“:"1年"
}
{
"product_id" : "2“,
"product_name" : "大虾“,
"product_desc" : "纯天然“,
"category_id" : "4“,
"category_name" : "生鲜“,
”eat_period“:"7天"
}
7. shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分称为多个shard,分布在多台服务器上存储,有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上执行,提升吞吐量和性能,每个shard都是一个lucene index.
8. replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本,replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能,primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard ,最小的高可用配置是2台服务器
具体的:
index会被拆分为多个shard,每个shard就会存放这个index的一部分数据,这些shard会散落在多台服务器上
shard的好处:横向扩展:比如数据量增加到4T,这个时候,重新建立有4个shard的索引,将数据导入进去
2. 数据分布多个shard,多台服务器上所有的操作,都会在多台服务器上并行分布式执行,提升吞吐量和性能
好处:高可用性:一个shard宕机,数据不丢,数据继续提供
2. 提升了搜索这类请求的吞吐量和性能
Es 数据库
Document 行
Type 表
Index 库