es核心概念介绍

1. es介绍

1.es是什么

​ elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.es特点

  • 分布式的实时文件存储,每个字段都被索引并可被搜索

  • 分布式的实时分析搜索引擎

  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

    关键词:分布式实时搜索引擎

3.对比mysql

​ MySQL作为开源关系型数据库,应用范围非常广泛,非常适合于结构化数据存储和查询。在数据查询场景下,默认返回所有满足匹配条件的记录;而ES作为新生代NoSQL数据库代表之一,非常适合于非结构化文档类数据存储、更创新支持智能分词匹配模糊查询。

2.倒排索引

例子:

比如我们有两个doc(document 文档),都有一个content字段

doc_1:The quick brown fox jumped over the lazy dog

doc_2:Quick brown foxes jump over lazy dogs in summer

TermDoc
quick[1,2]
the[1,2]
brown[1,2]
dog[1,2]
fox[1,2]
in[1]
lazy[1,2]
jump[1,2]
over[1,2]
summer[2]

3.核心概念介绍

1.索引(index)

​ elsaticsearch将它的数据存储在一个或多个索引(index)中。相比较于sql领域,索引就相当于数据库。

2.类型(type)

​ 一个类型过去是索引的逻辑类别/分区,允许你在同一索引中存储不同类型的文档,例如,一种类型用于用户,另一种类型用于博客文章。在索引中创建多个类型不再可能,类型的整个概念将在稍后的版本中删除。相当于sql领域中表的概念。

​ 在 5.X 版本中,一个 index 下可以创建多个 type;

​ 在 6.X 版本中,一个 index 下只能存在一个 type;

​ 在 7.X 版本中,直接去除了 type 的概念,就是说 index 不再会有 type。

3.文档(document)

​ 一个文档是一个可以建立索引的基本单元。文档是用JSON表示的。相当于sql领域中行的概念。

4.节点与集群(node、cluster)

​ Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。

单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)

5.分片

​ 在ES中,索引会备份成分片,每个分片是独立的lucene索引,可以完成搜索分析存储等工作。

分片的好处:

1 如果一个索引数据量很大,会造成硬件硬盘和搜索速度的瓶颈。如果分成多个分片,分片可以分摊压力。

2 分片允许用户进行水平的扩展和拆分

3 分片允许分布式的操作,可以提高搜索以及其他操作的效率

备份的好处

1 当一个分片失败或者下线时,备份的分片可以代替工作,提高了高可用性。

2 备份的分片也可以执行搜索操作,分摊了搜索的压力。

ES默认在创建索引时会创建5个分片,这个数量可以修改。

4.es索引过程

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uYdsLcf3-1584758041343)(C:\Users\yangk\Desktop\12.png)]

文档被索引的过程如上面所示,大致可以分为 内存缓冲区buffer、translog、filesystem cache、系统磁盘这几个部分,接下来我们梳理一下这个过程。

阶段1:

这个阶段很简单,一个document文档第一步会同时被写进内存缓冲区buffer和translog。

阶段2:

refresh:内存缓冲区的documents每隔一秒会被refresh(刷新)到filesystem cache中的一个新的segment中,segment就是索引的最小单位,此时segment将会被打开供检索。也就是说一旦文档被刷新到文件系统缓存中,其就能被检索使用了。这也是es近实时性(NRT)的关键。后面会详细介绍。

阶段3:

merge:每秒都会有新的segment生成,这将意味着用不了多久segment的数量就会爆炸,每个段都将十分消耗文件句柄、内存、和cpu资源。这将是系统无法忍受的,所以这时,我们急需将零散的segment进行合并。ES通过后台合并段解决这个问题。小段被合并成大段,再合并成更大的段。然后将新的segment打开供搜索,旧的segment删除。

阶段4:

flush:经过阶段3合并后新生成的更大的segment将会被flush到系统磁盘上。translog的大小和设置也会触发flush操作。

gment打开供搜索,旧的segment删除。

阶段4:

flush:经过阶段3合并后新生成的更大的segment将会被flush到系统磁盘上。translog的大小和设置也会触发flush操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值