ElasticSearch-03-简单理解ElasticSearch中的概念,以及Shard&Replica的解释
Posted Frank Q
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch-03-简单理解ElasticSearch中的概念,以及Shard&Replica的解释相关的知识,希望对你有一定的参考价值。
elasticsearch的核心概念与简单举例
1、Near Realtime(NRT):
近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级;
2、Cluster:集群
包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,
对于中小型应用来说,刚开始一个集群就一个节点很正常;
比如,在上文
ElasticSearch-02-使用Docker在Mac系统上搭建两个节点的ElasticSearch集群
(并同时创建kibana,cerebro两个容器): https://blog.csdn.net/yangqian201175/article/details/99664126
中在本机上通过Docker部署的便是一个拥有两个节点的集群,elasticsearch_cluster_product;
3、Node:节点
集群中的一个节点,节点也有一个名称(默认是随机分配的),
节点名称很重要(在执行运维管理操作的时候),
默认节点会去加入一个名称为“elasticsearch”的集群,
如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,
一个节点的elasticsearch部署也可以称之为一个集群;
在上文02中部署后的两个节点命名如下图所示:
4、Document&field:文档
es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,
每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段,
比如大家在工作中通过Kibana去查询某个服务的日志,那么诸多服务的日志通过换行截取,收集以后便是一份一份的文档,
而文档中所包含的服务名称,访问TxId,logDetails等信息便是其中的filed;
简单举例如下图所示:
5、Index:索引
包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。
一个index包含很多document,一个index就代表了一类类似的或者相同的document。
还是按照大家熟悉的日志系统举例,我们的日志组成结构,
如果是业务服务,日志一般情况下会通过切面的形式进行统一处理,
或者在手机的时候进行统一处理成格式基本一致的日志入到ElasticSearch中,
那么我们不同的测试场景,业务服务,数据服务,不同的环境,便是不同的Index;
简单的举例如下图所示:
6、Type:类型
每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,
都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type(不再赘述)
7、shard
单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。
有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。
8、replica
任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。
replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。
primary shard(建立索引时一次设置,不能修改,默认5个),
replica shard(随时修改数量,默认1个),
默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
如上图所示,其实每个shard都是一个lucene index,在读取,搜索的时候replica可以起到分摊的作用从而提高性能;
类比理解
ES | 数据库 |
---|---|
Index | 库 |
Type | 表 |
Document | 行 |
field | 列 |
以上是关于ElasticSearch-03-简单理解ElasticSearch中的概念,以及Shard&Replica的解释的主要内容,如果未能解决你的问题,请参考以下文章