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提供的强大的反向索引功能,可以根据关键字查询关键的错误日志。
2-Elasticsearch原理的更多相关文章
- 终于有人把Elasticsearch原理讲透了!
终于有人把Elasticsearch原理讲透了! http://developer.51cto.com/art/201904/594615.htm 小史是一个非科班的程序员,虽然学的是电子专业,但是通 ...
- (转)终于有人把Elasticsearch原理讲透了!
终于有人把Elasticsearch原理讲透了! 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 来源:互联网侦察 | 2019-04-08 ...
- 财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析
财务平台进行分录分表以后,随着数据量的日渐递增,业务人员对账务数据的实时分析响应时间越来越长,体验性慢慢下降,之前我们基于mysql的性能优化做了一遍,可以说基于mysql该做的优化已经基本上都做了, ...
- ElasticSearch原理
Elasticsearch-基础介绍及索引原理分析 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearc ...
- Elasticsearch 原理
Elasticsearch简介 Elasticsearch是一个基于Apache lucene的实时分布式搜索.具有以下优点: 1.实时处理大规模数据.2.全文检索,能够做到结构化检索和聚合分析.3. ...
- 【生活现场】从诗词大会飞花令到elasticsearch原理解析(转)
add by zhj: 作者是阿里的技术专家,把技术解释的通俗易懂,太牛了.该文转自作者的个人公众号:互联网侦察,里面有很多系列文章, 关于算法,大数据,面试现场三个系列,通过漫画学到知识,太棒了 ...
- 终于有人把elasticsearch原理讲通了
转自 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节. 但是由于小史很 ...
- elasticsearch原理学习笔记
https://mp.weixin.qq.com/s/dn1n2FGwG9BNQuJUMVmo7w 感谢,透彻的讲解 整理笔记 请说出 唐诗中 包含 前 的诗句 ...... 其实你都会,只是想不起 ...
- Elasticsearch原理讲透
小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节. 但是由于小史很久没有 ...
- 学习Elasticsearch原理笔记
Elasticsearch是一个分布式可拓展的实时搜索和分析引擎 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索 实时分析的分布式搜索引擎 可以拓展到上百台服务器,处理PB级别的结构化或 ...
随机推荐
- 如何把java项目打包成war包
用Eclipse手动打包 右击工程名 选择Export… 选择Web → WAR file 点击Browse,选择导出路径 然后war包就被导出来啦~是不是很简单呢 利用Maven的package命令 ...
- 第七周总结&第五次实验报告
学习总结 这周我们加深了对抽象类与接口的学习,获得的知识点也比上周多了许多,抽象类与接口很相似,就比如别人还没有做完的是交给你来做,而他那些样式都做好了,你只需要完善即可 但也有不同点. 区别点 抽象 ...
- 全面解读php-php会话控制技术
一.PHP会话控制技术 1.为什么要使用会话控制技术? 因为http协议是无状态协议,所以同一个用户在请求同一个页面两次的时候,http协议不会认为这两次请求都来自于同一个用户,会把它们当做是两次请求 ...
- DeepFaceLab620稳定版使用过程详解!
网站上的小白入门系列教程是基于2019.3.13的版本而编写,有部分内容已经发生了变化.而目前比较稳定的版本为620,这个版本保持了很长一段时间,并没有发现什么大问题,用着挺好.所以我决定针对这个版本 ...
- 浏览器端-W3School-JavaScript:JavaScript Date 对象
ylbtech-浏览器端-W3School-JavaScript:JavaScript Date 对象 1.返回顶部 1. Date 对象 Date 对象用于处理日期和时间. 创建 Date 对象的语 ...
- tf工程化部署相关
1.TensorFlow 模型保存/载入的两种方法 https://blog.csdn.net/thriving_fcl/article/details/71423039 [讲解清晰,2种方法都有缺陷 ...
- kotlin之数组
一.使用arrayOf函数定义可以存储任意值的数组 var arr1 = arrayOf(1,2,3,'a') println(arr1[3]) 二.使用arrayOfNulls函数定义数组 var ...
- 详析静态网站与动态网站区别(服务器ip dns 端口)
几个基本知识 1.服务器:能够提供服务的机器 取决于机器上所安装的服务软件 1) web服务器:提供web服务(网站访问) 就需要安装web服务软件,Apache,tomcat,iis等 2. ...
- Selenium 2自动化测试实战3(函数、类和方法)
一.函数.类和方法1.函数在python中通过def关键字来定义函数 创建一个add()函数,此函数接收两个参数a,b,通过print()打印a+b的结果.调用add()函数,并且上传两个参数3,5给 ...
- 【汇总】PHP 伪协议 利用
日期:2019-07-28 21:24:36 更新: 作者:Bay0net 介绍: 0x01.基本信息 文件包含函数 include() require() include_once() requir ...