小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。
对小史面试情况感兴趣的同学可以观看面试现场系列。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/vw7yjvp43n.jpeg?imageView2/2/w/1620)
随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。
但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/c76fvslgj3.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/fjkbw138pv.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/gve0fgvjfy.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/srjcvg2kbi.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/dnc8w9et77.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/8ephww5by1.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/axdarukss5.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9jtdiy6gxx.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ik8hxwuzfs.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/p6lcqn39o1.jpeg?imageView2/2/w/1620)
【倒排索引】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/h31esa02wp.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/8iibk6j9al.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/tk6imc6v1v.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/iukv4xkc09.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/rdiav0azbh.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/mn47okjig1.jpeg?imageView2/2/w/1620)
吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/w3iu0g9thx.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ozjw8pv68m.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/dzn5iz2puy.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/t9yv6tynwc.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/6jp6fs5qud.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/p12ljar4sj.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/mg1qw0i17x.jpeg?imageView2/2/w/1620)
【索引量爆炸】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/a6useor84x.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ivof024prj.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/jcmf6m3z91.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/rnj82gc80o.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/jcbrqhlb0m.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9clhunh3el.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/anz791boir.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/h80g89nxhq.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/jq9go3llcp.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/gmcf5t10nu.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/gurzxen3sz.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/szxcvg9sgq.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/y2tizo4djp.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/mql8skj3ix.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/3o92d4t2i0.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/pqsywkr4ez.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/87x2nxkfsu.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/rwemgoxppo.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/2gobu10vy1.jpeg?imageView2/2/w/1620)
【搜索引擎原理】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/k6xjsd95df.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/2rv4ao2yfh.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/w6mdaekdd9.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/xy0bh7css7.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/zu7a7tibzg.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/nmrv9trmsh.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/xv6dlo9x8u.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9fhdpc37qa.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/refisl7jsv.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/881jxwjhad.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/b0h7xc52za.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/vsmfiya0so.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/oznn074gj7.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/gbd1bm9upr.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/q3wdx6tvrj.jpeg?imageView2/2/w/1620)
【elasticsearch简介】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/31unov4qr7.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/irkc41av63.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/fq7r49k870.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/goivlfc2hn.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ojcqnfuew9.jpeg?imageView2/2/w/1620)
吕老师:但是lucene还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于lucene进行封装,写出了elasticsearch。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9e7jbjvy59.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/3ix05qva0b.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/h2v6gwdf33.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/lb3bknj3as.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/cerporxh9v.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/khqfhxb6mo.jpeg?imageView2/2/w/1620)
【elasticsearch基本概念】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/67m5mrvyds.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/957aci93n2.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/c7urx2qfil.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/tvcr4feeas.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/103paxhzqb.jpeg?imageView2/2/w/1620)
吕老师:类型是用来定义数据结构的,你可以认为是mysql中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/zel71cu8t3.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/gbwenc2ztj.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/p36vuvl1fq.jpeg?imageView2/2/w/1620)
吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫poems的索引,然后创建一个名叫poem的类型,类型是通过mapping来定义每个字段的类型,比如诗题、作者、朝代都是keyword类型,诗内容是text类型,而字数是integer类型,最后就是把数据组织成json格式存放进去了。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/yalj0tjbwi.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/bcppkcevsv.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/4jwqan87mr.jpeg?imageView2/2/w/1620)
吕老师:这个问题问得好,这涉及到分词的问题,keyword类型是不会分词的,直接根据字符串内容建立反向索引,text类型在存入elasticsearch的时候,会先分词,然后根据分词后的内容建立反向索引。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/3zms6x4b6r.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9krbbdysur.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9k40vfodeq.jpeg?imageView2/2/w/1620)
吕老师:之前我们说过,elasticsearch把操作都封装成了http的api,我们只要给elasticsearch发送http请求就行。比如使用curl -XPUT 'http://ip:port/poems',就能建立一个名为poems的索引,其他操作也是类似的。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ud8lcd7xu8.jpeg?imageView2/2/w/1620)
【elasticsearch分布式原理】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/nh6ddr7zca.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/bx6e1jw1rd.jpeg?imageView2/2/w/1620)
吕老师:没错,elasticsearch也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和hdfs是一样的,都是为了保证分布式环境下的高可用。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/vcd1e6qhie.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/fqwlhzelay.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/abwsgbkz9g.jpeg?imageView2/2/w/1620)
吕老师:没错,在elasticsearch中,节点是对等的,节点间会通过自己的一些规则选取集群的master,master会负责集群状态信息的改变,并同步给其他节点。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/pe0jwv6ew2.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/g85nxlyt4s.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/n0zfxy8jxk.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/k17j2fos0z.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/ae1ejrtvn.jpeg?imageView2/2/w/1620)
吕老师:注意,只有建立索引和类型需要经过master,数据的写入有一个简单的routing规则,可以route到集群中的任意节点,所以数据写入压力是分散在整个集群的。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/j60xc21zkj.jpeg?imageView2/2/w/1620)
【elk系统】
![](https://ask.qcloudimg.com/http-save/yehe-1130324/lilwyzvdz8.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/zyys040lac.jpeg?imageView2/2/w/1620)
吕老师:其实很多公司都用elasticsearch搭建elk系统,也就是日志分析系统。其中e就是elasticsearch,l是logstash,是一个日志收集系统,k是kibana,是一个数据可视化平台。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/trkuym6dk0.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9pujh5d16r.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/6fnabep9z7.jpeg?imageView2/2/w/1620)
吕老师:分析日志的用处可大了,你想,假如一个分布式系统有1000台机器,系统出现故障时,我要看下日志,还得一台一台登录上去查看,是不是非常麻烦?
![](https://ask.qcloudimg.com/http-save/yehe-1130324/3qqhgoi350.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/i65y8mbc2w.jpeg?imageView2/2/w/1620)
吕老师:但是如果日志接入了elk系统就不一样。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入elk系统中,我们直接在kibana就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。
![](https://ask.qcloudimg.com/http-save/yehe-1130324/9x7wcfn1bc.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/2jrtcz4ndb.jpeg?imageView2/2/w/1620)
![](https://ask.qcloudimg.com/http-save/yehe-1130324/glsc864n1p.jpeg?imageView2/2/w/1620)
【笔记】
小史学完了elasticsearch,在笔记本上写下了如下记录:
1、反向索引又叫倒排索引,是根据文章内容中的关键字建立索引
2、搜索引擎原理就是建立反向索引
3、elasticsearch在lucene的基础上进行封装,实现了分布式搜索引擎
4、elasticsearch中的索引、类型和文档的概念比较重要,类似于mysql中的数据库、表和行
5、elasticsearch也是master-slave架构,也实现了数据的分片和备份
6、elasticsearch一个典型应用就是elk日志分析系统
写完,又高高兴兴背诗去了。
观书有感
朱熹
半亩方塘一鉴开,天光云影共徘徊。
问渠那得清如许?为有源头活水来。
转发自: