面试官: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还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
如果觉得我的文章还不错的话就点个赞吧
面试官:ElasticSearch是什么,它有什么特性与使用场景?的更多相关文章
- 面试官: 说说看, 什么是 Hook (钩子) 线程以及应用场景?
文章首发自个人微信号: 小哈学Java 个人网站地址: https://www.exception.site/java-concurrency/java-concurrency-hook-thread ...
- 面试官:说说TCP和UDP的区别和应用场景
原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! 上一篇聊完 一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表 ...
- 因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知!
因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知! volatile 是并发编程的重要组成部分,也是面试常被问到的问题之一.不要向小强那样,因为一句:volati ...
- 面试官:RabbitMQ怎么实现消费端限流
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 RabbitMQ有很多高级特性, ...
- 互联网公司的面试官是如何360°无死角考察候选人的?[z]
[z]https://juejin.im/post/5c0e47ebf265da614e2be9a7 一.写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不 ...
- 大厂面试官:Java工程师的“十项全能”
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格Java软件工程师所要具备的. 一.专业技能 熟练的 ...
- RabbitMQ系列(六)--面试官问为什么要使用MQ,应该怎么回答
如果简历中有写到使用过RabbitMQ或者其他的消息中间件,可能在MQ方面的第一个问题就是问:为什么要使用MQ 面试官期望的回答 1.项目中有什么业务场景需要用到MQ 2.但是用了MQ,会带来很多问题 ...
- 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU
你知道的越多,你不知道的越多 点赞再看,养成习惯 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联 ...
- 面试官问我MySQL调优,我真的是
面试官:要不你来讲讲你们对MySQL是怎么调优的? 候选者:哇,这命题很大阿...我认为,对于开发者而言,对MySQL的调优重点一般是在「开发规范」.「数据库索引」又或者说解决线上慢查询上. 候选者: ...
随机推荐
- Logistic 回归模型的参数估计为什么不能采用最小二乘法?
logistic回归模型的参数估计问题,是可以用最小二乘方法的思想进行求解的,但和经典的(或者说用在经典线性回归的参数估计问题)最小二乘法不同,是用的是"迭代重加权最小二乘法"(I ...
- 【静态页面架构】CSS之定位
CSS架构 1.浮动: 是以float属性设置容器指定的位置 <style> div { width: 200px; height: 200px; } #qq { background-c ...
- 前端规范(ES6BEMOOCSSSMACSS)
前端规范 在实际开发中,由于团队成员编码习惯不一,技术层次不同,开发前定制并遵循一种代码规范能提高代码质量,增加开发效率. Javascript Javascript规范直接参考airbnb: ES6 ...
- javaweb之删除功能
对数据库的删除,主要是通过表中的一个数据查询来进行逐个删除,否则会清空整张表. 一.dao层 在dao层加入删除方法 public boolean delete(Course n) { boolean ...
- java中抛出throw关键字是怎么用的? 举例?
5.抛出throw关键字 马克-to-win:我们先说5/0的原理,当程序运行到5/0的时候,java系统JVM会在后台new出一个除0异常实例,之后把这个实例传入catch块儿供开发者使用.马克-t ...
- 【Android开发】分割字符串工具类
public class TextUtils { public static String[] results; /** * 分隔符:"." * * @param resource ...
- JavaScript实现指定格式字符串表单校验
运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...
- 记一次修改框架源码的经历,修改redux使得redux 可以一次处理多个action,并且只发出一次订阅消息
redux是一个数据状态管理的js框架,redux把行为抽象成一个对象,把状态抽象成一个很大的数据结构,每次用户或者其他什么方式需要改变页面都可以理解成对数据状态的改变,根据出发这次改变的不同从而有各 ...
- centOS一次性更新所有依赖库
CentOS中使用yum一次性更新安装依赖库 [tom@localhost /]# sudo -s [root@localhost /]# LANG=C [root@localhost /]# yum ...
- 二. 手写SpringMVC框架
1.1 新建DispatcherServlet 1.2 在src目录下,新建applicationContext.xml <?xml version="1.0" encodi ...