Es 分布式的搜索引擎
EFK
E: EalsticSearch 搜索和分析的功能
F: Flume分布式日志采集系统
K: Kibana 数据可视化(分许)平台
数据的流向大概如下:
(采集) (存储)(分析展示)
FLUME –> ES –> KIBANA
搜索引擎基本原理
以前是根据ID查内容,倒排索引之后是根据内容查ID,然后再拿着ID去查询出来真正需要的东西。
了解lucene
ES就是分布式的集群,每一个节点其实就是Lucene。
名词解析
-
index 索引(索引库)
我们为什么使用ES?因为想把数据存进去,然后再查询出来。 我们在使用Mysql或者Oracle的时候,为了区分数据,我们会建立不同的数据库,库下面还有表的。 其实ES功能就像一个关系型数据库,在这个数据库我们可以往里面添加数据,查询数据。 ES中的索引非传统索引的含义,ES中的索引是存放数据的地方,是ES中的一个概念词汇 index类似于我们Mysql里面的一个数据库 create database user; 好比就是一个索引库
-
type类型
类型是用来定义数据结构的
在每一个index下面,可以有一个或者多个type,好比数据库里面的一张表。 相当于表结构的描述,描述每个字段的类型。 -
document文档
文档就是最终的数据了,可以认为一个文档就是一条记录。 是ES里面最小的数据单元,就好比表里面的一条数据
-
Field 字段
好比关系型数据库中列的概念,一个document有一个或者多个field组成。
-
shard分片
一台服务器,无法存储大量的数据,ES把一个index里面的数据,分为多个shard,分布式的存储在各个服务器上面。 kafka:为什么支持分布式的功能,因为里面是有topic,支持分区的概念。所以topic A可以存在不同的节点上面。就可以支持海量数据和高并发,提升性能和吞吐量
-
replica:副本
一个分布式的集群,难免会有一台或者多台服务器宕机,如果我们没有副本这个概念。就会造成我们的shard发生故障,无法提供正常服务。 我们为了保证数据的安全,我们引入了replica的概念,跟hdfs里面的概念是一个意思。 可以保证我们数据的安全。 在ES集群中,我们一模一样的数据有多份,能正常提供查询和插入的分片我们叫做 primary shard,其余的我们就管他们叫做 replica shard(备份的分片) 当我们去查询数据的时候,我们数据是有备份的,它会同时发出命令让我们有数据的机器去查询结果,最后谁的查询结果快,我们就要谁的数据(这个不需要我们去控制,它内部就自己控制了)