专栏名称: 石杉的架构笔记
专注原创、用心雕琢!十余年BAT一线大厂架构经验倾囊相授
目录
相关文章推荐
杭州本地宝  ·  余杭家电、家居以旧换新补贴新增34类产品! ·  16 小时前  
余杭发布  ·  298.48万人次!创历史新高! ·  18 小时前  
巴比特资讯  ·  前高管组团创业,OpenAI没有竞业协议? ·  2 天前  
杭州本地宝  ·  最高1200元!杭州2025年电动车以旧换新 ... ·  3 天前  
51好读  ›  专栏  ›  石杉的架构笔记

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

石杉的架构笔记  · 公众号  ·  · 2020-03-23 18:10

正文

郑重声明:漫画人物和故事情节均是原创,未经同意禁止任何形式的转载,侵权将进入法律程序。大佬除外。

欢迎大家转发文章,谢谢!

小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。

对小史面试情况感兴趣的同学可以观看 面试现场系列


随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。


但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。


【倒排索引】


吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。

【索引量爆炸】


【搜索引擎原理】


【elasticsearch简介】


吕老师:但是 lucene 还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 lucene 进行封装,写出了 elasticsearch

【elasticsearch基本概念】


吕老师:类型是用来定义数据结构的,你可以认为是 mysql 中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录。

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

吕老师:这个问题问得好,这涉及到分词的问题, keyword 类型是不会分词的,直接根据字符串内容建立反向索引, text 类型在存入 elasticsearch 的时候,会先分词,然后根据分词后的内容建立反向索引。

吕老师:之前我们说过, elasticsearch 把操作都封装成了 http api ,我们只要给 elasticsearch 发送 http 请求就行。比如使用 curl -XPUT ' http://ip:port/poems ' ,就能建立一个名为 poems 的索引,其他操作也是类似的。

【elasticsearch分布式原理】


吕老师:没错, elasticsearch 也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和 hdfs 是一样的,都是为了保证分布式环境下的高可用。

吕老师:没错,在 elasticsearch 中,节点是对等的,节点间会通过自己的一些规则选取集群的 master master 会负责集群状态信息的改变,并同步给其他节点。

吕老师:注意,只有建立索引和类型需要经过 master ,数据的写入有一个简单的 routing 规则,可以 route 到集群中的任意节点,所以数据写入压力是分散在整个集群的。

【elk系统】








请到「今天看啥」查看全文