参考知乎大佬: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提供的强大的反向索引功能,可以根据关键字查询关键的错误日志。

最新文章

  1. mysql错误汇总
  2. java中的IO操作
  3. 安装Maven、Eclipse设置、添加地址JAR
  4. 《Cortex-M0权威指南》之体系结构---栈空间操作
  5. liunx环境下的mysql数据库配置文件my.conf内的参数含义
  6. listview自定义背景以及item自定义背景
  7. WebSocket实时异步通信
  8. python 时间及日期函数
  9. 写入目录 /tmp/OraInstall2015-05-20_03-35-53PM 时出错
  10. Nginx学习笔记二基本配置
  11. Top命名的一些简单用法
  12. C#调用存储过程带输出参数或返回值
  13. 实验:实现https
  14. [bzoj4923]K小值查询
  15. 【实战问题】【4】Vue写的页面在微信手机端和微信web开发者工具中都能正常显示,但是在微信pc端上显示空白
  16. Python读取excel表的数据
  17. Percona-xtrabackup 使用详解与原理
  18. 新闻编辑室第一季/全集The Newsroom迅雷下载
  19. SV中的线程
  20. pyspider示例代码四:搜索引擎爬取

热门文章

  1. Struts2理解?
  2. 第十四周学习总结&课程实验报告
  3. 全排列函数next_permutation(a,a+n)
  4. LeetCode 92. 反转链表 II(Reverse Linked List II)
  5. Docker-----deepin系统下docker安装registry
  6. 浏览器端-3WSchool-JavaScript:JavaScript Boolean 对象
  7. DatePicker 日期选择器
  8. 三十五:数据库之SQLAlchemy外建之一对多关系
  9. 基于 Node.js 的服务器自动化部署搭建实录
  10. Function程序设计及应用