一、Elasticsearch是什么?
Elaticsearch,简称为ES,是一个RESTful风格的高扩展的分布式全文搜索和分析引擎,它允许快速,近实时地存储,搜索和分析大量数据,例如博客网站用户可以在里面写一些文章定义一些关键字,我们根据关键字去快速搜索文章
1.ES基础概念介绍
1 索引:一个索引就是一个拥有几份相似特征的文档的集合,跟我们熟悉的关系型数据库比较的话 一个索引就相当于一个数据库。
2.文档:是一个可以被索引的基础信息单元。相当于数据库表中的一条数据。
3.节点:集群的一个服务器就是一个节点,作为集群的一部分,用来存储数据,参与集群的索引和搜索功能。Es扩展节点很方便,一个节点可以通过配置集群名称的方式来加入一个指定的集群。这意味着,如果你在你的网络中启动了 若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个集群中
4.分片:将索引切分(相当于MYSQL分库),分布的放在每个分片上,分片又被放到集群的节点上,每个分片都是独立的索引,这样即使某个分片坏了,也不影响其他分片的查询。
分片很重要,主要有两方面的原因
1:允许你水平分割 / 扩展你的内容容量。
2:允许你在分片之上进行分布式的、并行的 *** 作,进而提高性能/吞吐量。
5.副本:ES允许创建分片的一份或多份拷贝,这些拷贝就叫做副本, 他不仅可以避免单点故障问题,还可以扩展你的搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。
2.ES读写流程
二、ES全文搜索为什么快?
1.采用倒排索引的概念
在传统数据库中,如果我们想要根据某一关键字,去查询相关的数据,往往采用模糊查询like的方式,而模糊查询会导致查询引擎放弃索引,进行全表扫描,在数据量大的情况下,查询效率是非常低下的,传统数据库根据正向索引,通过主键ID找到内容,再去匹配关键字,而ES采用倒排索引的概念来存储和查询数据,通过关键字找到主键ID,再去查找文章内容,查询效率是比较高的
正排索引
ID content
1 hello world
2 hello Data World
倒排索引
keyword id
hello 1,2
data 2
2.分布式查询
Es的分布式检索查询分为两个阶段:查询阶段和取回阶段。
- 客户端向任意节点发送请求,比如node3节点(node3节点成为了协调节点),协调节点并不是主节点,只作为接收请求,转发请求到其他节点,汇总各个节点返回数据的功能。
- Node3会对document进行路由,将请求转发到相应的node,比如node1和node2,node1和node2会执行查询请求,分别查询一个索引的全部分片,并返回数据给node3
- Node3将数据排序处理返回给客户端。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)