哈喽!大家好,我是小奇,一位热爱分享的程序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。

文章目录

  • 一、前言
  • 二、面试
  • 三、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面试】阅读更多的好文章,获取我为大家准备的资料。回复【项目】更有开源项目持续更新分享给大家。