文章目录
- 一、前言
- 二、面试
- 三、ElasticSearch是什么
- 四、ElasticSearch索引原理
- 五、ElasticSearch分词器
- 六、ElasticSearch有哪些使用场景呢
- 七、总结
一、前言
书接上回,我本以为我跟面试我的小姐姐情投意合,这次工作肯定是十拿九稳了。
殊不知最后卡在了hr大姐那里了,说我体格太小不合适,我是来面试开发来了,不是面试驴拉磨来了, 我怀疑hr跟刘婶是亲戚吧,以貌取人、以体格取人。。。
由于以为昨天十拿九稳,今天也没有约面试,闲着也是闲着,我准备找我在北京当工程师的发小去玩一天,他跟我说他是什么长方体固体定向移动工程师,我也不懂这是个什么,感觉比Java工程师要厉害,决定今天去拜访他一下。
换乘了四趟地铁,又坐了十几站公交车,终于来到了我发小猴哥这里来了,他之前在电话里跟我说他现在混得特别好,从之前的一无所有,混到现在的。。。,由于地铁上信号不太好后面混成啥样没听清就挂断了,我觉得怎么也混到了呼风唤雨的地步了吧。
到了目的地跟他打电话,他跟我说他在幸福小区顶楼,直接上来吧没有门,我寻思什么房子这么高级没有门呢,结果上来了远远的就看见他的背影了,我终于知道后面说的现在混成什么样了,原来是从之前的一无所有,混成现在的身无分文了啊。。。
我:“猴哥,你不是说你在顶楼没有门吗?”
猴哥:“对啊,你看我现在不就在顶楼正干活呢嘛,这顶楼还没有盖好,所以当然没有门了嘛”。
我:“行吧,说不过你,那你不是工程师吗,什么长方体固体定向移动工程师”。
猴哥:“对啊,你看我手里的砖是长方体吧,我从这边给他移动到这边,我这一套下来不就是长方体固体定向移动工程师嘛”。
我:“得,你来了大城市了以后套路也变深了啊”。
猴哥:“那必须的,对了小奇你来北京不是来面试Java了吗,面试的怎么样了?”
我:“别提了,人家嫌我体格不好,我要是有你这体格那我就杠杠的上班了”。
猴哥:“那你正好也别找开发工作了,你直接跟我干好了,干一个月你体格也就好了”。
我:“那你们这里加班吗?压力大不大?”
猴哥:“一点都不大,你可以看看我们大门口的岗位要求,我感觉简简单单啦,跟你们程序员还是没法比的哦”。
我:“在哪呢?我去看看”。
我:“你们这特么都是跟谁学的,现在工地也这么卷的吗?“
猴哥:“没办法,我们前一段时间空降了一个工头,之前是某大厂程序员,给我们定了规矩,现在我们每天回去还得写ppt呢”。
我:“这特么都是大厂给社会输送的人才,你得好好跟着你们工头干啊”。
猴哥:“必须的,等我我收拾一下,我们出去玩”。
我:“你这就收拾好了啊,不换身衣服啊”。
猴哥:“不用换,一会领导打电话还得赶回来干活呢,你们不是也随时待命,陪女朋友逛商场也得背着电脑嘛”。
我:“以后学我点好的,别学我坏的”。
猴哥:“不是你也没有好的啊”。
我:“我。。。”。
二、面试
从发小那里玩完下午回来的路上突然接到了一个电话,电话那头的小姐姐声音甜美,说是在简历库中看到了我的简历,问我有没有时间去现场面试,我想着反正现在也没有事情,不如就去面试,小姐姐说加我微信,一会发我公司地址。
加了小姐姐微信后,上来肯定是先看一波朋友圈啊,小司机可能不太懂,但是老司机已经开始分析了,该说不说这个小姐姐确实正品啊,比刘婶强多了,为了弥补被我刘婶视觉冲击到的读者,我就把小姐姐的照片分享给大家。
到了地方后小姐姐把我带进一个小黑屋,正在我窃喜可能会发生点什么的时候之间她拿了面试题过来了,说外面没有地方了,就在这个小屋子里做题吧,唉,白期待了。
做完题来了一位面试官,我一看是男的就瞬间没了兴趣,但是来都来了,怎么也得面试完啊。
面试官:“小奇是吧”。
我:“是我”。
面试官:“我看你简历上写的精通ElasticSearch?是真的还是写错了”。
我:“我时而精通时而模糊,你就问吧”。
面试官:“行,那你就先简单的说一下ElasticSearch是什么吧”。
三、ElasticSearch是什么
我:“ElasticSearch是用Java开发的,并且是当前最流行的开源的企业级搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎,它能够达到实时搜索,稳定,可靠,快速,安装使用方便”。
四、ElasticSearch索引原理
面试官:“嗯,你能说一下ElasticSearch使用的什么索引吗,有什么原理吗”。
我:ElasticSearch中分词使用的是倒排索引。
我:ElasticSearch先将文章的内容进行分词,将词和行数关联起来,然后将重复的词去重,将行数记录下来,这样我们上面如果搜索hello这个词的话就会给他展示第1和2行的数据,因为hello就在这两行里面,而不用再全文章扫描了。
面试官:“嗯,为什么有些数据库在数据量变大的时候性能下降的非常厉害,而ElasticSearch数据量越来越大的时候反而性能下降的不明显呢”。
我:因为我们可以看到,无论文章有多少的内容,我们最后都会去重,也就是说最后的索引表中的条数不会超过所有的单词。
也就是说假如世界上只有100个单词,那么最后索引表中只有100条数据,因为文章是由单词组成的,文章内容再多最后去重后也只有100条数据,只不过数据的所在行有所变化而已。
这样我们就看出来了,文章内容越多,他的单词重复率越高,查询性能降低的也越来越慢。
五、ElasticSearch分词器
面试官:“嗯,那我们怎么知道一句话中哪些是词语呢,怎么来分词呢”。
我:如果文章是英文的,那么非常好分词,因为英文单词中间有空格,我们根据空格就可以分词,这样直接使用ElasticSearch自带的分词器就好。
如果文章是中文的,那么使用ElasticSearch自带的分词器就不是很好了,因为它会将中文的每一字都给分开,显然是不合理的,总不能把奇哥很帅分开吧。
所以我们可以使用IK中文分词器,我们使用这个插件就可以实现中文内容的分词了。
六、ElasticSearch有哪些使用场景呢
面试官:“嗯,那你说一下ElasticSearch有哪些使用场景呢”。
我:一般的话像百度这种的专门做搜索的,你搜索关键词,他会帮你找到对应的内容,并且给他标红。
我:还有像淘宝、京东这种购物网站,搜索关键词也会展示内容,并且关键词高亮处理。
面试官:“小伙子不错呀,什么时候能入职呢”
我:“额。。。我后面还约了面试呢,怎么也得一周左右了吧”
面试官:“别面别家的了,就来我这吧,条件随便开”
我:“不不不,容我考虑考虑”。
面试官:“行,那等你考虑好了告诉我,今天就先这样,你还有什么问题要问我的吗”
我:“我有问题要问”。
面试官:“什么问题”
我:“就是带我的那个hr球姐有对象吗。。。”
七、总结
这里关于ElasticSearch还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】阅读更多的好文章,获取我为大家准备的资料。回复【项目】更有开源项目持续更新分享给大家。