栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch-Base-倒排索引及其原理

ElasticSearch-Base-倒排索引及其原理


title: ElasticSearch-base-倒排索引及其原理
date: 2021-10-19 16:29:51
tags: ElasticSearch
categories:

ElasticSearch


1.倒排索引及其原理 前言

我不必完美,我只需不断学习。

一、原理

见其名知其意,有倒排索引,对应肯定,有正向索引。

正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。

在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索引库中,关键词也已经转换为关键词ID)。例如“文档1”经过分词,提取了20个关键词,每个关键词都会记录它在文档中的出现次数和出现位置。

得到正向索引的结构如下:

​ “文档1”的ID > 单词1:出现次数,出现位置列表;单词2:出现次数,出现位置列表;…………。

​ “文档2”的ID > 此文档出现的关键词列表。

一般是通过key,去找value。

**当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户。**因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时返回排名结果的要求。

​ 所以,搜索引擎会将正向索引重新构建为倒排索引,即把文件ID对应到关键词的映射转换为关键词到文件ID的映射,每个关键词都对应着一系列的文件,这些文件中都出现这个关键词。

​ 得到倒排索引的结构如下:

​ “关键词1”:“文档1”的ID,“文档2”的ID,…………。

​ “关键词2”:带有此关键词的文档ID列表。

从词的关键字,去找文档。

二、换句话说

倒排索引,其实相当于将value的值拿出来分词当做key.然后查询value,这个value可能是key

2.1、索引爆炸

试想一下,如果整片文章那么多词,如果每个词的索引都对应整篇文章的内容那得存多少,那么内存的消耗是很大的。这就称为索引爆炸。

但是呢我们可以将词映射到文章标题,然后在通过标题映射到文章内容。比如

索引’前‘->静夜思->窗前明月光,疑是地上霜,举头望明月,低头思故乡。这么来的话,效率就高了很多了。

2.2、索引矩阵

一个词可以指向多个索引

2.3、停顿词过滤

像文章中的语气词,没什么具体意思的词都称为停顿词。

停顿词就都会被过滤掉。

三、搜索引擎三大过程

爬虫内容,进行分词,建立反向索引

(详细请百度)

四、Lucene简介

lucene的库,用它就可以方便地建立倒排索引

(详细请百度)

五、ElasticSearch简介

优点:

elasticsearch将对搜索引擎的操作封装成了restful的api,通过http请求就能对其进行操作;它还考虑了海量数据,实现了分布式,是一个可以存储海量数据的分布式搜索引擎 5.1、用法

之前我们说过,Elasticsearch 把操作都封装成了 HTTP 的 API,我们只要给 Elasticsearch 发送 HTTP 请求就行。

比如使用curl -XPUT 'ip:port/poems' ,就能建立一个名为 Poems 的索引,其他操作也是类似的。

所以,只需要学习elasticsearch的http api,就可以熟练操作elasticsearch

5.2、Elasticsearch分布式原理

ES也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和HDFS一样

目的:都是为了保证分布式环境下的高可用

5.2.1、ES也是master-slave框架吗?

没错,在 ES中,节点是对等的,节点间会通过自己的一些规则选取集群的 Master,Master 会负责集群状态信息的改变,并同步给其他节点。

注意:只有建立索引和类型需要经过 Master,数据的写入有一个简单的 Routing 规则,可以 Route 到集群中的任意节点,所以数据写入压力是分散在整个集群的。

六、ELK系统 6.1、应用场景

其实很多公司都用 Elasticsearch 搭建 ELK 系统,也就是日志分析系统。其中 E 就是 Elasticsearch,L 是 Logstash,是一个日志收集系统,K 是 Kibana,是一个数据可视化平台。

6.2、分析日志

假如一个分布式系统有 1000 台机器,系统出现故障时,我要看下日志,还得一台一台登录上去查看,是不是非常麻烦?

但是如果日志接入了 ELK 系统就不一样。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入 ELK 系统中,我们直接在 Kibana 就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。

这都依赖于ES强大的反向索引功能,这样我们根据关键字就能查找到关键的错误日志了

七、搜索引擎原理

总结:

反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。搜索引擎原理就是建立反向索引。Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。Elasticsearch 一个典型应用就是 ELK 日志分析系统。

开发视图用于描述系统的模块划分和组成,以及细化到内部包的组成设计,服务于开发人员,反映系统开发实施过程。

八、参考资料

https://zhuanlan.zhihu.com/p/62892586 作者 channingbreeze

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号