参考知乎大佬: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原理的更多相关文章

  1. 终于有人把Elasticsearch原理讲透了!

    终于有人把Elasticsearch原理讲透了! http://developer.51cto.com/art/201904/594615.htm 小史是一个非科班的程序员,虽然学的是电子专业,但是通 ...

  2. (转)终于有人把Elasticsearch原理讲透了!

    终于有人把Elasticsearch原理讲透了! 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 来源:互联网侦察 | 2019-04-08 ...

  3. 财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析

    财务平台进行分录分表以后,随着数据量的日渐递增,业务人员对账务数据的实时分析响应时间越来越长,体验性慢慢下降,之前我们基于mysql的性能优化做了一遍,可以说基于mysql该做的优化已经基本上都做了, ...

  4. ElasticSearch原理

    Elasticsearch-基础介绍及索引原理分析 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearc ...

  5. Elasticsearch 原理

    Elasticsearch简介 Elasticsearch是一个基于Apache lucene的实时分布式搜索.具有以下优点: 1.实时处理大规模数据.2.全文检索,能够做到结构化检索和聚合分析.3. ...

  6. 【生活现场】从诗词大会飞花令到elasticsearch原理解析(转)

    add by zhj:  作者是阿里的技术专家,把技术解释的通俗易懂,太牛了.该文转自作者的个人公众号:互联网侦察,里面有很多系列文章, 关于算法,大数据,面试现场三个系列,通过漫画学到知识,太棒了 ...

  7. 终于有人把elasticsearch原理讲通了

    转自 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节. 但是由于小史很 ...

  8. elasticsearch原理学习笔记

    https://mp.weixin.qq.com/s/dn1n2FGwG9BNQuJUMVmo7w 感谢,透彻的讲解 整理笔记 请说出 唐诗中 包含 前  的诗句 ...... 其实你都会,只是想不起 ...

  9. Elasticsearch原理讲透

    小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节. 但是由于小史很久没有 ...

  10. 学习Elasticsearch原理笔记

    Elasticsearch是一个分布式可拓展的实时搜索和分析引擎 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索 实时分析的分布式搜索引擎 可以拓展到上百台服务器,处理PB级别的结构化或 ...

随机推荐

  1. Set的遍历以及排序详讲

    java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法 package com.sort;   import java.util.HashSet; import jav ...

  2. 国内著名的vue-element-admin-layout框架的使用

    vue-element-admin-layout 是一个后台前端解决方案,它基于 vue 和 element-ui实现.它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提 ...

  3. 通过JVM日志来进行安全点分析

    许多事件都可能会导致JVM暂停所有的应用线程.这类暂停又被称为”stop-the-world”(STW)暂停.触发STW暂停最常见的原因就是垃圾回收了(github中的一个例子),但不同的JIT活动( ...

  4. grep家族、sed、awk

    一.grep家族 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 在上一次的博客中已经使用过egrep通过正则表达式来匹配正确IP地址,这里的用法就不多说了. f ...

  5. MessageWebSocket

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; usi ...

  6. Ajax学习--理解 Ajax 及其工作原理

    Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 下面是 Ajax 应用程序所用到的基本技术:• HTML 用于建立 Web 表单并确定应用 ...

  7. centos6 yum安装mysql 5.6 (完整版)

    使用源代码编译安装mysql还是比较麻烦,一般来说设备安装时请网络同事临时开通linux上网,通过yum网络实现快速安装,或配置yum仓库进行内网统一安装. 通过网络快速安装过程如下 一.检查系统是否 ...

  8. sqlserver2012语法

    1.SQL Server 2012 Format()方法 SQL Server 从 2012 开始增加了Format方法,可以使用 Format来格式化日期与数字,而且和 C# 里的日期格式化一致,语 ...

  9. C++ Vector实践

    实践如下: #include <iostream> #include <vector> #include <typeinfo> using namespace st ...

  10. leetcode 123. 买卖股票的最佳时机 III

    使用动态规划的解法,空间复杂度O(2*2)如果交易k次则为O(2*k),时间复杂度O(2n),交易k次为O(n*k), 因此本题实际上可以退化为买卖一次的情况:去掉buy2和sell2,即leetco ...