【ElasticSearch】es基本了解

es可做搜索引擎,也常用语搭建ELK系统做日志分析。

搜索引擎:
es最基本的有三个名词我们要知道:索引,类型,文档。索引相当于数据库,类型相当于数据表,映射相当于表结构,文档相当于行数据。
索引:
倒排索引:又叫反向索引。根据文档内容中的关键字建立索引,叫倒排索引。

类型:
字符串string,表示字符串的有keyword、text;
keyword:直接建立反向索引
text:先分词,后建反向索引
数指型:long、integer、short、byte、double、float
日期型:date
布尔型:boolean
二进制型:binary
数组类型(Array datatype)

映射:
映射用来建立文档,用来定义字段的类型、分词器、属性等。分为动态映射和静态映射。
动态:
关系型数据库中,我们需要事先创建数据库,然后在该数据库建表,插入数据;而es不需要事先设计映射,在文档写入es时,会根据文档字段自动识别类型,称为动态映射。

静态:
在es中可以事先定义好映射,包含文档的各个字段及其类型等,这种方式叫静态映射。

es在lucene的基础上封装,实现了分布式搜索引擎。

es分布式原理:
Cluster集群:
集群中有多个节点,其中有一个为主节点,这个主节点是通过选举产生,这是从集群内部来说的。es的一个概念是去中心化,是对集群外部来说的,在逻辑上是个整体,你与任何一个节点的通信与整个es集群通信等价的。

Shards分片:
es可以把一个完整的索引分成多个分片,当索引很大时,拆分成多个,分布到不同的节点上,可以分担压力,提高搜索及其他效率,提高es可用性。默认创建五个分片,分片的数量在建立索引后不可更改,但是备份的可以更改。

replicas:
索引副本,es可设置多个索引的副本,副本作用:一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复;二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

Recovery:
数据恢复或叫数据重新分布。es在有节点加入或退出时会根据机器的负载对索引分片重新分配,挂掉的节点重新启动时也会进行数据恢复。

es的master-slave架构,实现了分片和备份:
在这里插入图片描述
建立索引时,首先在master建立,然后再同步到从机。
但是这样会不会导致写性能很低?
不会的,只有建立索引或类型需要经过master,数据写入有个简单的routing规则,可以route到集群中任意节点,压力是分布在集群中的。

ES为什么要实现集群?
我们可以处理不能在一个单一的服务器运行的大型索引,索引过大会导致效率问题,不能运行的原因可能是内存也可能是存储,每个分片都可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

集群核心原理分析:
1、每个索引分成多个shards进行存储,默认创建索引是分配5个分片进行存储。每个分片都会分布式部署多个不同的节点上进行部署,该分片称为primary shards。
2、为了实现高可用,主分片可以有对应的备份分片replicas shards,replica shards分片承载了负责容错、及请求的负载均衡。(每个主分片都有自己的备份分片,主对应的备份不能在同一台服务器上,主primary shards和replicas shards放在同一个node节点)

ELK系统做日志分析:
在这里插入图片描述
分析日志有什么用?
假如一个分布式系统有1000台机器,系统出现故障时,我要看日志,还要一台一台登录上去看,但是如果日志接入了ELK,系统运行过程中,突然出现异常,在日志中就可以及时反馈,我们可直接在Kibana中看到日志情况,如果再接入实时计算模块,还可以做实时报警功能。

总结:
本文参考:http://developer.51cto.com/art/201904/594615.htm?pc
博主写的通俗易懂,小编非常推荐。

发布了253 篇原创文章 · 获赞 76 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/hongwei15732623364/article/details/100083962