大数据开发:ElasticSearch基本索引机制

作为搜索引擎数据库而闻名的ElasticSearch,在数据平台架构当中,也占有重要的一席之地。ElasticSearch作为数据库而言,主要的优势来源于其特殊的倒排索引机制。今天的大数据开发分享,我们就主要来讲讲,ElasticSearch基本索引机制的实现。
 

大数据学习:ElasticSearch基本索引机制


ElasticSearch索引是如何建立的?

ElasticSearch存储的单元是「索引」,这一点区别于很多关系型数据库和NoSQL数据库。ElasticSearch存储的基本单元是索引,那么索引是如何创建的呢?

ElasticSearch索引的实现基于Lucene,使用倒排索引的结构,倒排索引的引入,使得ElasticSearch可以非常高效地实现各种文件索引。

在搜索引擎中,索引的建立需要经过网页爬取、信息采集、分词、索引创建的过程,不过在ElasticSearch内部存储的实现中,数据的写入可以对比搜索引擎对网页的抓取和信息采集的过程,只需要关注分词和索引的创建。

ElasticSearch分词和索引

分词是在索引建立中特别重要的一个环节,分词的策略会直接影响索引结果。Lucene提供了多种分词器,分词器是一个可插拔的组件,包括内置的标准分词器,也可以引入对中文支持较好的IKAnalyze中文分词器等。

下面我们通过一个例子来了解分词的具体过程,假设我们在ElasticSearch中新增了两个文档,每个文档包含如下内容:

文档1,Jerry and Tom are good friends.

文档2,Good friends should help each other.

英文是有单词的,单词之间通过空格进行拆分,所以对英文的分词相对容易,比如上面的内容,可以直接对字符串按照空格拆分,得到分词后的数组。

Jerry//and//Tom//are//good//friends/.Good//friends//should//help//each//other/.

如果是中文,除了标点符号以外,一个整句是没有分隔符的,处理起来就会复杂得多。一般来说,中文分词用得比较多的策略是基于字典的最长字符串匹配方式,这种策略可以覆盖大多数场景,不过还是有一小部分天然存在歧义的文档是无法处理的。比如「学生会组织各种活动」,按照最长串匹配的方式,可以切分成“学生会/组织各种活动”,但实际要表达的可能是“学生/会/组织各种活动”。

ElasticSearch建立索引

索引存储的结构是倒排索引,什么是倒排索引呢?倒排索引是相对于正排索引来说的,倒排索引描述了一个映射关系,包括文档中分词后的结果,以及分别包含这些单词的文档列表。

索引描述的其实就是关键词和文档的关系,正排索引就是“文档—关键词”的格式,倒排索引则相反,是“关键词—文档”的格式。可以看到,当需要使用关键词进行检索时,使用倒排索引才能实现快速检索的目的。

具体到数据结构的实现,可以通过实现一个字典树,也就是Trie树,对字典树进行扩展,额外存储对应的数据块地址,定位到具体的数据位置。

对比B+树

B+树描述的是索引的数据结构,而倒排索引是通过索引的组织形式来命名的。比如我们上面的例子中,倒排指的是关键词和文档列表的结构关系。

对于数据库来说,索引的作用是提高数据查询的性能,考虑到磁盘寻址的特性,选择了B+树作为索引的实现结构,可以更好地实现通过主键以及通过区间范围查找的要求。

对于倒排索引,则是对应具体的应用场景,我们在搜索中是通过一些关键词,定位到具体的文档。所以倒排索引实现的是根据关键词,也就是分词的结果,去查找文档,或者不同的网页。

关于大数据开发,ElasticSearch基本索引机制,以上就为大家做了简单的介绍了。当然,这里只对ElasticSearch的索引机制做了非常简略的介绍,更深入的介绍我们在后续会继续讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值