前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch 中的倒排索引的概念

ElasticSearch 中的倒排索引的概念

作者头像
AustinDatabases
发布2021-06-10 10:34:01
6150
发布2021-06-10 10:34:01
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

ElasticSearch 中可以进行全文索引,而且可以快速的将数据从海量的数据中提取出来, 其中倒排索引是ElasticSearch 中比较核心的处理数据的概念。那么理解倒排序是理解ElasticSearch 快速处理数据的一个关键.

在说倒排索引之前,我们其实应该明白什么是正排索引,这里的索引并非是我们通常理解的传统数据库中 INDEX 的 ASC , DESC 的意思.

正排索引, 是一个数据库结构,一个将文档中的词和文档之间进行关联的功能,

首先他将扫描文档中的所有单词,将单词添加到索引的页面当中,直到将文档中的所有词都遍历一遍,如果在一个文档中,查询某个单词的速度是非常快的,而如果要变为搜索所有文档中的某一个关键词就难了. 文档越多,则查询的速度会越来越慢.

正排序, 每个文档都会扫描出一些关键字, 所以如果在一个文档中找到对应的字是很简单的,快速的, 但反过来,如果要通过"我"字查询到有多少文档有这个字,那就麻烦了文档越多,遍历的时间就越长.

所以在目前的状态下, 查询的效率被挑战, 就必须通过其他的方法来快速查询的设计.

这里就需要另一个方法来进行查询, inverted index 倒排索引,通过将上面的数据存储的结构反过来通过"词" 作为索引的主结构, 通过搜寻文档来获得所有的词,

在搜索文档中的词的时候,如果这个条目在索引的原结构上没有,则创建新的词标签,如果有的情况下,将添加这个词发现的位置到这个词所在的索引列.

在DNS 系统中的, DNS LOOP 可以理解为正排, 而在 DNS 系统中的

Reverse lookup 就为相关的倒排序.

同时我们还可以在加大利用这个倒排序的方式, 例如加入 文档1 中存在 我字的个数也都添加到倒排序的信息中.

在建立以关键词为主的索引的过程中,词典结构也会相应地被构建出来。比如在解析一个新文档的时候,对于某个在文档中出现的单词T,首先利用哈希函数获得其哈希值,之后根据哈希值对应的哈希表项读取其中保存的指针,就找到了对应的冲突链表。如果冲突链表里已经存在这个单词,说明单词在之前解析的文档里已经出现过。如果在冲突链表里没有发现这个单词,说明该单词是首次碰到,则将其加入冲突链表里。通过这种方式,当文档集合内所有文档解析完毕时,相应的词典结构也就建立起来了。

通过这样的结构设计,ES 可以承担起全文索引的问题.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档