(1)从写入数据到数据可以被搜索到有一个小延迟(大概 1 秒);
(2)基于 es 执行搜索和分析可以达到秒级
一个集群下有多个节点。集群名称,默认是 elasticsearch
集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时 候),默认节点会去加入一个名称为 "elasticsearch" 的集群,如果直接启动一堆节点,那么它们会自动组成一个 elasticsearch 集群,当然一个节点也可以组成一个 elasticsearch 集群
节点通过配置集群名称加入指定的集群
包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个 index 包含很多 document,一个 index 就代表了一类类似的或者相同的 document。比如说建立一个 product index,商品索引,里面可能就存放了所有的商品数据,所有的商品 document。
类型,每个索引里都可以有一个或多个 type,type 是 index 中的一个逻辑数据分类,一个 type 下的 document,都有相同的 field,比如博客系统,有一个索引,可以定义用户数据 type,博客数据 type,评论数据 type。
商品 index,里面存放了所有的商品数据,商品 document
但是商品分很多种类,每个种类的 document 的 field 可能不太一样,比如说电器商品,可能还包含一些诸如售后时间范围这样的特殊 field;生鲜商品,还包含一些诸如生鲜保质期之类的特殊 field
type,日化商品 type,电器商品 type,生鲜商品 type
日化商品 type:product_id,product_name,product_desc,category_id,category_name
电器商品 type:product_id,product_name,product_desc,category_id,category_name,service_period
生鲜商品 type:product_id,product_name,product_desc,category_id,category_name,eat_period
每一个 type 里面,都会包含一堆 document
{
"product_id": "2",
"product_name": "长虹电视机",
"product_desc": "4k 高清",
"category_id": "3",
"category_name": "电器",
"service_period": "1 年"
}
{
"product_id": "3",
"product_name": "基围虾",
"product_desc": "纯天然,冰岛产",
"category_id": "4",
"category_name": "生鲜",
"eat_period": "7 天"
}
文档,es 中的最小数据单元,一个 document 可以是一条客户数据,一条商品分类数据,一条订单数据,通常用 JSON 数据结构表示,每个 index 下的 type 中,都可以去存储多个 document。一个 document 里面有多个 field,每个 field 就是一个数据字段。
product document
{
"product_id": "1",
"product_name": "高露洁牙膏",
"product_desc": "高效美白",
"category_id": "2",
"category_name": "日化用品"
}
单台机器无法存储大量数据,es 可以将一个索引中的数据切分为多个 shard(一个 index 包含多个 shard ),分布在多台服务器上存储。有了 shard 就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个 shard 都是一个 lucene index。每个 shard 都是一个最小工作单元,承载部分数据,lucene 实例,完整的建立索引和处理请求的能力
shard 分为:
(1)primary shard:主分片
(2)replica shard :备份分片,是 primary shard 的副本,负责容错,以及承担读请求负载
任何一个服务器随时可能故障或宕机,此时 shard 可能就会丢失,因此可以为每个 shard 创建多个 replica 副本。replica 可以在 shard 故障时提供备用服务,保证数据不丢失,多个 replica 还可以提升搜索操作的吞吐量和性能。增减节点时,shard 会自动在 nodes 中负载均衡。
primary shard(建立索引时一次设置,不能修改,默认 5 个),
replica shard(随时修改数量,默认 1 个),默认每个索引 10 个 shard,5 个 primary shard,5 个 replica shard,最小的高可用配置,是 2 台服务器。
primary shard 的数量在创建索引的时候就固定了,replica shard 的数量可以随时修改(primary shard 的默认数量是 5,replica 默认是 1,默认有 10 个 shard,5 个 primary shard,5 个 replica shard )
primary shard 不能和自己的 replica shard 放在同一个节点上(否则节点宕机,primary shard 和副本都丢失,起不到容错的作用),但是可以和其他 primary shard 的 replica shard 放在同一个节点上
每个 document 肯定只存在于某一个 primary shard 以及其对应的 replica shard 中,不可能存在于多个 primary shard
设置索引的 primary shard 和 replica shard 的数量
PUT /test_index
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
1、shard 的负载均衡
2、master 的选举
3、replica 容错
primary shard 宕机后,新 master 将某个 replica shard 提升为 primary shard。重启宕机 node,master copy replica 到该 node,使用原有的 shard 并同步宕机后的修改。原有的 primary shard 降级为 replica shard
4、读写请求
来源: http://www.bubuko.com/infodetail-2445467.html