https://mp.weixin.qq.com/s/dn1n2FGwG9BNQuJUMVmo7w

感谢,透彻的讲解

整理笔记

请说出 唐诗中 包含 前  的诗句

......

其实你都会,只是想不起来,

“窗前明月光”

因为在你大脑中的 索引方式是

静夜思---床前明月光,疑是地上霜,举头望明月,低头思故乡

这就需要  倒排索引

倒排索引就是   前---窗前明月光

       前--遥望瀑布挂前川

       。。。。。。

那样就意味着 所有的文字都要 以这样的方式建立索引喽

这就是搜索引擎的原理!倒排索引

那样文件量是不是会很大呢?

索引会不会很多?如果文字量大(一篇1000字的文章),而且索引的维护量会不会很大啊

没问题,我们想办法,首先

正向压缩, 例如 前  ---静夜思

        前--望庐山瀑布

        .....

这样,就不用存每首诗的全文了。

还能不能更好呢?

如果是把静夜思 转化成key,是不是更简单。

如果是把所有的诗,搭建一个矩阵 是不是 更简单!

第二步:

建立索引前 要 先分词,然后再见索引   (那要建立多少词啊)

没关系,一篇文章里不用所有的词都建立索引吧, 想 的  是 嗯 等等 这样的词,不用建立索引了吧。

那么 引入 停用词 词库,可以把这些无关紧要的屏蔽掉了。

最后再说 ES的原理,

先有一个 叫 lucene 的库,后来又有人基于lucene进行封装,写出了elasticsearch

es将对搜索引擎的操作 全部封装成为基于restful 的 api,通过 http请求,对其进行操作。

数据量大量呢,还可以通过分布式,搭建多台服务器

怎么把数据存进去呢?

比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫poems的索引,然后创建一个名叫poem的类型,类型是通过mapping来定义每个字段的类型,比如诗题、作者、朝代都是keyword类型,诗内容是text类型,而字数是integer类型,最后就是把数据组织成json格式存放进去了。

keyword 和text都是字符串类型的,区别就是   keyword 不会被分词,text要被分词。

keyword类型是不会分词的,直接根据字符串内容建立反向索引,text类型在存入elasticsearch的时候,会先分词,然后根据分词后的内容建立反向索引。

elasticsearch分布式原理

es会对数据进行切片,每一个分片会保存多个副本,为了保证分布式环境下的高可用

elasticsearch原理学习笔记的更多相关文章

  1. Unity3D 骨骼动画原理学习笔记

    最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1. ...

  2. Java并发之底层实现原理学习笔记

    本篇博文将介绍java并发底层的实现原理,我们知道java实现的并发操作最后肯定是由我们的CPU完成的,中间经历了将java源码编译成.class文件,然后进行加载,然后虚拟机执行引擎进行执行,解释为 ...

  3. TCP/IP协议原理学习笔记

    昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...

  4. 个人MySQL的事务特性原理学习笔记总结

    目录 个人MySQL的事务特性原理笔记总结 一.基础概念 2. 事务控制语句 3. 事务特性 二.原子性 1. 原子性定义 2. 实现 三.持久性 1. 定义 2. 实现 3. redo log存在的 ...

  5. 【GISER && Painter】Chapter00:OpenGL原理学习笔记

    说明:简单了解一下OpenGL的工作原理,初步认识计算机对于图形渲染的底层设计与实现,第一次接触,也没学过C艹,欢迎各位批评指正. 一  什么是OpenGL? OpenGL是一个开放标准(specif ...

  6. Elasticsearch原理学习--为什么Elasticsearch/Lucene检索可以比MySQL快?

    转载于:http://vlambda.com/wz_wvS2uI5VRn.html 同样都可以对数据构建索引并通过索引查询数据,为什么Lucene或基于Lucene的Elasticsearch会比关系 ...

  7. selenium原理学习笔记

    一,selenium工作原理(参考文档:https://blog.csdn.net/dawei_yang000000/article/details/87639928) 自动化测试代码发送请求给到浏览 ...

  8. 初探 Elasticsearch,学习笔记第一讲

          1. ES 基础   1.1 ES定义   ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展 ...

  9. Jvm工作原理学习笔记(转)

    一.         JVM的生命周期 1.       JVM实例对应了一个独立运行的java程序它是进程级别 a)     启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有pub ...

随机推荐

  1. Excel多表头设置二级联动选择

    1.初始准备 2.全选,然后开始 -> 查找和选择 -> 定位条件 3.公式 -> 根据所选内容创建 因为一级联动数据在第一行,所以选首行 4.因为学校信息与联动数据不在同一个she ...

  2. Java里方法的参数传递方式

    Java里方法的参数传递方式只有一种:值传递. Java中参数传递的都是参数值 下面从两个维度来看 1.传递的参数是8种基本数据类型 这个比较好理解,8种基本数据类型,作为参数时,可以理解为原来的一个 ...

  3. RFC-6455 The WebSocket Protocol 浅读

    什么是WebSokcet? WebSocket是一种协议,并且是各大主流浏览器作为客户端支持的协议.它的目标就是用来替代基于 XMLHTTPRequest和长轮询的解决方案.应用在时时弹幕,消息推送, ...

  4. Java多次启动相同jar程序

    背景 现在很多软件都支持集群部署,但是测试环境通常资源有限,所以一般通过单台机器模拟集群部署(使用不同端口,运行相同jar包),本文的目的就是通过多种方式实现此需求. 两个程序 1.jar程序 ① s ...

  5. vs2015 如何更改背景主题颜色

    打开vs2015 步骤:工具--> 选项 -->环境-->常规-->主题设置

  6. swap 释放

    #swap 释放 -------------------------------- swapoff -a wwapon -a

  7. MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120)

    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) ***** 解决方法 ...

  8. 【转】Redis哨兵(Sentinel)模式

    主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...

  9. 解决Invalid Plugin needs a valid package.json

    首先.npm install -g plugman 然后,plugman   create    --name  [插件名字]    --plugin_id    [插件id] 这样会生成一个除了pa ...

  10. 抓包 抓nodejs的包 抓浏览器的包 抓手机的包

    应用场景: 确认接口是能用的,但自己使用时就是不行,参数有没有传正确?格式对不对?傻傻分不清. 抓包工具:这里演示 charles , 常用的还有 Fiddler, HttpWatch, WireSh ...