本文讲解大纲,分8个核心概念讲解说明:node
Elasticsearch的核心优点就是(Near Real Time NRT)近乎实时,咱们称之为近实时。
NRT有两个意思,下面举例说明下:mysql
举个例子:电商平台新上架一个新商品,1秒后用户就可搜索到这个商品信息,这就是近实时。sql
也举个例子说明,好比我如今想查询我在淘宝,最近一年都买过几件商品,总共花了多少钱,最贵的商品多少钱,哪一个月买到东西最多,什么类型的商品买的最多这样的信息,若是淘宝说,你要等待10分钟才能出结果,你是否是很崩溃,这个延迟的时间就不是近实时,若是淘宝能够秒级别返回给你,就是近实时了。编程
下面画一个图,解释下三个基本概念的服务器
包含多个节点,每一个节点属于哪一个集群是经过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来讲,刚开始一个集群就一个节点很正常。集群的目的为了提供高可用和海量数据的存储以及更快的跨节点查询能力。数据结构
集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操做的时候),默认节点会去加入一个名称为“elasticsearch”的集群,若是直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,固然一个节点也能够组成一个elasticsearch集群负载均衡
document 是es中的最小数据单元,一个document能够是一条客户数据,一条商品分类数据,一条订单数据,一般用JSON数据结构表示,每一个index下的type中,均可以去存储多个document。一个document里面有多个field,每一个field就是一个数据字段。运维
至关于mysql里的行,能够简单这么理解,举个例子。一个商品的文档数据一条以下:elasticsearch
product document { "product_id": "1000", "product_name": "mac pro 2019 款笔记本", "product_desc": "高性能,高分辨率,编程必备神器", "category_id": "2", "category_name": "电子产品" }
包含一堆有类似结构的文档数据,好比能够有一个客户索引,商品分类索引,订单索引,索引有一个名称。
一个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能够将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就能够横向扩展,存储更多数据,让搜索和分析等操做分布到多台服务器上去执行,提高吞吐量和性能。
每一个shard都是一个lucene index。
任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,所以能够为每一个shard建立多个replica副本。replica能够在shard故障时提供备用服务,保证数据不丢失,多个replica还能够提高搜索操做的吞吐量和性能。
primary shard(创建索引时一次设置,不能修改,默认5个),
replica shard(随时修改数量,默认1个),
默认每一个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
相关索引解释说明:
索引在集群中分配图:
本文由博客一文多发平台 OpenWrite 发布!