2-Elasticsearch原理
参考知乎大佬:https://zhuanlan.zhihu.com/p/62892586
一、倒排索引
倒排索引也叫反向索引,举个例子,理解一下。叫你背一首《静夜思》,立马可以背出,但是叫你被一首包含“前”字的是诗,你却想不到《静夜思》。但是如果我们以“前”作为索引,这样就可以背出来。简单理解正常索引就是正常背诗,从诗名到作者到内,倒排索引就是被带有“前”字的诗,背的过程可以理解为建立索引的过程。但是这样会引发一个问题。类别数据库索引,正常背诗就是聚合索引,通过建立主键索引。
二、搜索量爆炸
一首《静夜思》内容有20个字,如果每个字都建立倒排索引,例如
这样数据量爆炸增长,所以我们可以把value值改为诗名,这样可以大大压缩数据内容。类别数据库索引,反常背诗就是非聚合索引,通过多内容字段新建索引,索引指向主键值,在通过主键找到目标内容。
对于一些常用的字段,每次调用都要进行非聚会索引的话,总是要通过主键查找,这样会产生大量的io操作,占用CPU,应对这一问题,出现了覆盖索引,也称多字段查询。即在建立新索引时把索引的内容添加到value值中,这样就可以直接索引,而不用通过主键索引,这里有个知识点,联合索引,左端原则,就不展开了,有兴趣的伙伴可以自己Google一下。
三、搜索引警原理
通常搜索引警都是通过词语找文章,ES也是如此。它们的核心就是建立倒排索引,还包括爬虫、停顿词过滤等等。爬虫就是网页爬取。停顿词过滤就是把一句话中的没有意思的词过滤,例如“了”,“啊”等等。也即分词。
四、Elasticsearch介绍
利用lucence库可以很方便的建立倒排索引,但是 Lucene 还是一个库必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 Lucene 进行封装,写出了 Elasticsearch。
es的好处:
a、es对搜素引警的操作都封装成了restful的api,通过http请求就可以对其操作。
b、考虑到海量数据,实现了分布式,是一个可以存储海量数据的分布式搜索引警。
阅读到此处可以转到我的另一篇博客,内容有重复就不写了。
https://www.cnblogs.com/JimShi/p/11309651.html
五、Elasticsearch中如何建立索引
a、之前我们说过,Elasticsearch 把操作都封装成了 HTTP 的 API,我们只要给 Elasticsearch 发送 HTTP 请求就行。比如使用 curl -XPUT 'http://ip:port/poems',就能建立一个名为 Poems 的索引,其他操作也是类似的。
b、可以通过es的数据展示工具Kibana操作,GET、POST、PUT、DELETE
详细请看我的另一篇微博,kibana的基本操作:https://www.cnblogs.com/JimShi/p/11242657.html
六、Elasticsearch分布式原理
详情请看我的另一篇博客:https://www.cnblogs.com/JimShi/p/11309640.html
七、ELK系统
很多公司都用 Elasticsearch 搭建 ELK 系统,也就是日志分析系统。其中 E 就是 Elasticsearch,L 是 Logstash,是一个日志收集系统,K 是 Kibana,是一个数据可视化平台。
分析日志的用处可大了,你想,假如一个分布式系统有 1000 台机器,系统出现故障时,我要看下日志,还得一台一台登录上去查看,是不是非常麻烦?但是如果日志接入了 ELK 系统就不一样。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入 ELK 系统中,我们直接在 Kibana 就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。依赖Elasticsearch提供的强大的反向索引功能,可以根据关键字查询关键的错误日志。
最新文章
- mysql错误汇总
- java中的IO操作
- 安装Maven、Eclipse设置、添加地址JAR
- 《Cortex-M0权威指南》之体系结构---栈空间操作
- liunx环境下的mysql数据库配置文件my.conf内的参数含义
- listview自定义背景以及item自定义背景
- WebSocket实时异步通信
- python 时间及日期函数
- 写入目录 /tmp/OraInstall2015-05-20_03-35-53PM 时出错
- Nginx学习笔记二基本配置
- Top命名的一些简单用法
- C#调用存储过程带输出参数或返回值
- 实验:实现https
- [bzoj4923]K小值查询
- 【实战问题】【4】Vue写的页面在微信手机端和微信web开发者工具中都能正常显示,但是在微信pc端上显示空白
- Python读取excel表的数据
- Percona-xtrabackup 使用详解与原理
- 新闻编辑室第一季/全集The Newsroom迅雷下载
- SV中的线程
- pyspider示例代码四:搜索引擎爬取
热门文章
- Struts2理解?
- 第十四周学习总结&;课程实验报告
- 全排列函数next_permutation(a,a+n)
- LeetCode 92. 反转链表 II(Reverse Linked List II)
- Docker-----deepin系统下docker安装registry
- 浏览器端-3WSchool-JavaScript:JavaScript Boolean 对象
- DatePicker 日期选择器
- 三十五:数据库之SQLAlchemy外建之一对多关系
- 基于 Node.js 的服务器自动化部署搭建实录
- Function程序设计及应用