Elasticsearch简介以及索引原理

 搜索是现代软件必备的一项基础功能,而 Elasticsearch 就是一款功能强大的开源分布式搜索与数据分析引擎。今天就给大家介绍下它的应用场景和索引实现的原理~ 

一、Elasticsearch是什么? 

Elasticsearch是一个实时的分布式搜索分析引擎,它可以使你以前所未有的速度和规模去探索你的数据。

它被用来做全文检索、结构化搜索和分析,以及这三个功能的组合,比如:

  • Wikipedia使用Elasticsearch提供高亮片段的全文搜索,并且遵循search-as-you-type和did-you-mean的原则。

  • 卫报使用Elasticsearch将有关新文章的实时反馈提供给公众。

  • Stack Overflow将定位查询整合到全文检索中去,并使用more-like-this接口去查找相关的问题和回答。

  • GitHub使用Elasticsearch对1300亿行代码进行查询。  

二、ES的生态圈   

ES生态圈主要包含这几个好基友:

Elasticsearch简介以及索引原理_第1张图片

 

三、 ES的特点和优势:

  • 分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。

  • 实时分析的分布式搜索引擎,将索引拆分成多个分片,集群中的数据节点可以承载一个或多个分片,并且协调和处理各种操作,负载再平衡和路由大多数情况下自动完成。

  • 可以扩张到上百台服务器上,处理PB级别的结构化和非结构化数据,也可以运行在单台PC上。

  • 支持插件机制,分词插件、同步插件、Hadoop插件和可视化插件。 

  

四、asticsearch全文检索的原理是什么?

这里先解释什么是正排索引,什么是倒排索引。

正排索引好比一本书的目录,我们通过书本的目录,找到相关内容的页码,再去查询该页码下,我们想要查找的内容。

倒排索引主要是为了解决“你想知道的某个关键词在书中的哪一页出现过”这类问题。倒排索引需要把文本拆分成一个一个单词,并且标记这个单词在文本中的位置,当我们想查找与某个关键词相关的文本内容时,我们通过倒排索引查找,就可以很轻易找到我们想要查找的内容。  

五、Lucene构建index原理

新增文档可以分为四个步骤:

  1. 新增文档:doc经过Analyzcr分词器分词之后,我们可以得到词(term)和文档ID的对应列表。

  2. 对这些词集进行一次排序:然后合并相同的词并统计出现频率,以及记录出现的文档ID,得到倒排索引(与正排相反)。由于不是通过一条数据记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。

  3. 生成词典文件:不仅保存有每个关键词,还保留了指向频率文件和位置文件的指针,通过指针可以找到该关键字的频率信息和位置信息。

  4. 进行索引:拿到单词先对词典进行二元查找,找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,整个过程是毫秒级的。 

Elasticsearch简介以及索引原理_第2张图片

六、Lucene构建index原理—segment段

分片由多个segment段组成,每个段都是一个独立的倒排索引集,且具有不变性。

Segment段不可变=>则意味着它不需要锁,也不需要更新,但也正是由于它的不可变性导致增删改都需要新建段文件。

新增文档首先写入文件系统缓存(高效),默认每秒refresh成新增段(不落盘),变成可搜索的状态。

删除的文档在旧段中也不会被删除,只是放在.dcl文件中在查询时被过滤掉了。

更新文档时,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询,但是会在结果中被过滤掉。 

Elasticsearch简介以及索引原理_第3张图片

七、Lucene构建index原理—持久化变更

  1. 新的文档被添加到内存缓冲区并且被追加到了translog事务日志。

  2. 刷新(refresh)完成后,缓存被清空但是事务日志不会。

  3. 更多的文档被添加到内存缓冲区和追加到事务日志。

  4. 在刷新(flush)之后,段被全量提交,并且事务日志被清空。 

八、Lucene构建index原理—合并段

自动refresh每秒会创建一个新段,这会导致短时间内的段数量暴增。每个搜索请求都必须轮流检查每个段,所以段越多,搜索也就越慢,Elasticsearch会在后台进行段合并来解决这个问题,主动将这些零散的segment做数据归并,尽量让索引内只保有少量的、每个都比较大的scgment文件。

以上就是本期的全部内容了,下期将会带大家了解Elasticsearch的集群架构原理,敬请期待!

你可能感兴趣的:(搜索引擎,全文检索,elasticsearch)