前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何系统的学习 Elasticsearch ?

如何系统的学习 Elasticsearch ?

作者头像
铭毅天下
发布2021-03-22 12:39:47
6.2K1
发布2021-03-22 12:39:47
举报
文章被收录于专栏:铭毅天下

这是上一次技术直播里六个子主题中的最后一个主题的扩展版本。近期又有读者问到类似问题,我认为非常有必要花长时间梳理后跟大家分享一下。

1、基础篇:零基础如何学 Elasticsearch ?

常见问题:“ES 零基础入门书籍看什么比较好?”

认知前提:书籍的速度已远落后于 ES 版本更新的速度。ES 几乎每个月发布一个版本,更新很快。

市面上的书籍,尤其国外翻译书籍还大多是:1.x,2.x,5.x ,6.x 的版本,更新较慢。

有几本7.X的书籍,我没有买实体书,不太有发言权。不过:1.X——6.X全部实体书我都买了,也都看完了,可以说有发言权。

相比于实体书籍,我更推荐官方文档,但鉴于“零基础”读者对英文的恐惧,书籍、视频、学习路线等推荐列表如下:

1.1 零基础书籍推荐

推荐1:《这就是搜索引擎》

这是一本介绍搜索引擎原理的书,有了搜索引擎原理的认知再去理解 Elasticsearch 会有“居高临下”俯视的感觉。

  • 推荐理由 1:长销书(比畅销书高一个level)、作者是中科院软件所博士、包含大量图解、通俗易懂。
  • 推荐理由 2:貌似在 medcl 大神(Elasti中文社区创始人、Elastic中国第1位员工) 书架也有这本书。

推荐 2:《Elasticsearch 权威指南》2.X 中文翻译电子书

地址如下:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

  • 推荐理由 1:虽然基于 2.X,但底层原理的介绍并不过时,值得一看。
  • 推荐理由 2:wood大叔(携程架构师、Elastic 中文社区排名第1名)也曾经多次推荐且他看过2遍以上+。

推荐 3:《Elasticsearch 实战》纸质书

这本书是《Elasticsearch IN ACTION》 的翻译版本。

  • 推荐理由 1:作者之一已入职 Elasticsearch。
  • 推荐理由 2:翻译作者是极客时间数学课的作者:黄申博士,翻译还可以,至少比《 Lucene 实战 》翻译好 100 倍。
  • 推荐理由 3:这本书是 Medcl 大神写的序。

推荐4:结合 ECE 考纲、《Elasticsearch 最少必要知识》电子教程啃官方文档。

Elasticsearch 最少必要知识》 地址:

https://www.yuque.com/deep_elasticsearch/tzcm9n

  • 推荐理由 1:ECE 认证考试是以考带练,入门学习和进阶的绝佳方式,没有之一。
  • 推荐理由 2:单独看官方文档不知道重点,而 ECE 考纲就是重点。
  • 推荐理由 3:单独看官方文档 + ECE大纲没有头绪,《Elasticsearch 最少必要知识》帮梳理清楚了。

1.2 零基础入门视频教程推荐

推荐 1:阮一鸣老师 7.1+ 极客时间视频

地址:https://time.geekbang.org/course/intro/100030501

推荐 2:魏彬老师慕课网的视频(6.X 版本)

地址:https://coding.imooc.com/class/181.html

推荐 3:李猛老师视频课程(最新版本)

地址:https://www.gupaoedu.cn/course-es.html

推荐 4:中华石杉老师的 2.X 视频教程

地址:https://www.roncoo.com/view/80

推荐 5:死磕 Elasticsearch 最少必要知识系列直播(7.x + 版本,推进中)

地址:http://t.cn/RmwM3N9

因为每个人的“口味”不同,正所谓“众口难调”,再好口碑的课程也有人觉得“鸡肋”。

所以,上面列举了几乎所有 Elasticsearch 视频教程,总有适合你的一款。

1.3 “零基础”是相对的、不要怕!

所谓“零基础”,Mysql 数据库的一些常规操作基础是有的吧?

推荐结合已有知识体系,类比学习:

MySQL

ElasticSearch

Table

Index

Table

Type

Row

Document

Column

Field

Schema

Mapping

Index

Everything is indexed

SQL

Query DSL

select * from …

GET http://…

update table set …

POST http://…

group by、avg、sum

Aggregations

去重 distinct

cardinality

数据迁移

reindex

通过类比:就可以由已有认知过度到未知认知,便于快速习得技能。

建议把基础内容分为两部分,

  • part 1:增删改查

这一部分相对好理解,或者可以借助已有知识体系类比加深理解。

进一步细分为:

  • 索引的增删改查
  • 文档的增删改查
  • Mapping 的增删改查
  • template 的增删改查
  • ......

这些知识有了,基本的操作基本都经过手了。

  • part 2:非增删改查

进一步细分为:

  • 数据预处理 Ingest
  • 自定义分词
  • 检索分类
  • 聚合分类
  • 节点角色分类
  • 集群备份与快照
  • 集群安全
  • 跨集群部署
  • 冷热集群架构
  • 跨机房跨机架检索
  • ......

有了上面的分类,一个知识点一个知识点的攻克就可以了。

1.4 形成自己的学习路线图

我之前梳理的学习路线图如下:

重磅 | Elasticsearch7.X学习路线图

学习路线因人而异,上面的路线图仅供参考。

需要结合自己的实践和认知,找到属于自己的一条学习路线。

1.5 “零基础”学习方法论——光看不够,搭建环境 + 练起来更重要!

书籍和视频一个道理,看再多不如练习一遍。

这里强调的练:是《刻意练习》书籍中推崇的概念“练习”的练,不是盲目的练习、而是有目的、有目标的刻意练习。

你看星球考过的 46 位认证工程师,都是刻意练习 + 对官方文档非常熟练的结果。

最简单、最轻量化的方式:搭建好环境(单节点 Elasticsearch + kibana),用 kibana 自带的三个示例数据就可以练习起来。

  • 部署方式一:如果 PC 内存足够,搭建个虚拟机就可以开搞了。
  • 部署方式二:如果对 docker 很熟悉,docker 部署 ELK 也非常快。
  • 部署方式三:一、二都不喜欢,自己买个云服务器(最少2核4G)就够了。

结合自己的需求,用自己最擅长的方式。

以上,期望有助于你快速入门!

2、进阶篇:实践加深认知

基础篇强调练起来。进阶篇会进一步强调“练”的重要性。

2.1 刻意学习一遍官方文档

程序猿DD大佬说过:要切实的落实某个框架,全面了解和掌握的方式永远都是“官方文档 + 学会读源代码”。

是的,如果说入门我们可以看博客、看视频,站在别人“肩上”走的更快。那么进阶的话,系统的过一遍官方文档就很有必要了。

如果感觉上来就全英文有些吃力,可以 7.X 最新版本的英文结合 2.X 中文文档一起来看。

如果感觉吃力,可以看一下技术博客资源:

全网最牛逼的 Elasticsearch 天团博客集合

2.2 实战中刻意练习

在产品或项目架构、开发、运维的过程中,遇到问题,不要仅局限在解决问题本身,多刨根问底,问问底层原理是什么?

  • 举例 1:range query 对数值类型还是 keyword 类型来讲,哪种数据类型会更快?
  • 举例 2:index sort 真的很快吗?适用于什么场景?底层是如何实现的?

这时候有遇到不明白的,可以翻阅官方文档,查看github issue记录,翻阅源代码,社区内讨论等......通过不断求证提升认知。

2.3 上学下帮的练习

社区中每天都有来自全国 N 多公司线上实战问题,看看别人都遇到了哪些问题?用了哪些技术栈?

国内Elastic社区地址:https://elasticsearch.cn/

国外Elastic社区地址:https://discuss.elastic.co/

2.3.1 向上学

向比自己厉害的人学习。

社区社群中有大量的大牛,即便很“偏门”、“刁钻”的问题也能有非常独到的见解和思路,这就很值得我们去学习。

学习什么?

学习他们拆解问题、分析问题、定位问题以及解决问题的思路。

2.3.2 向下帮

帮助需要帮助的人,大家都有知识盲区。帮助别人的同时个人也能得到飞速的提升。

正所谓:“讲一遍有一遍的收货”。

对于求助人来说,“能把问题讲清楚、问题就解决了一大半”。

而对于解答者来说:“输出倒逼输入,帮助别人排查问题,本质就是进一步提升自己的认知”。别的不说,社区 wood 大叔的文章基本就是解决自己或者别人问题而累积的干货,对 Elastic 学习者来说大有裨益。

你有一个苹果,我有一个橘子,我们一交换,每个人得到的都是两种不同味道的水果。

你知道一个知识点,我知道另外一个知识点,我们一交换,每个人得到的是两个不同的知识点,甚至有可能扩展彼此的认知边界。

不要忽视“重复的力量”,举个例子:“小朋友听儿歌,基本2-3遍+就能跟着哼出相应的语调”,这就是听的多、重复的次数多的原因。一样的,我们给别人讲解的多了之后,自己记忆的会越来越牢固。

2.4 逐步构建属于自己的知识体系

经常收到的问题是:“知识不成体系,学的东西都很散,不用就忘记了”。

是这样的,现在网络资源非常多,甚至适合上手的项目、源码都是开源的,所以上手不是难事。

遇到问题就去通过搜索引擎检索答案本也无可厚非,但是看到的内容、学到的内容永远不是全貌。

所谓“只见树木、不见森林”大抵也是这个意思。

举个实战例子:

  • 模板 template 在数据量不大、索引不多的情况下根本用不到。

由于我们的思维惯性,会一直认为创建索引、指定 Mapping 顺理成章。

当遇到海量数据的时候,可以通过脚本创建Mapping。项目结束或者其他什么时间,才发现有template。最后慨叹:“早知道有template,我就不用维护那么多脚本了”。

  • Ingest 数据预处理,在写入前处理数据的妙处,用过才知道很爽、很方便!

同样是思维惯性,不知道 Ingest 的话,总感觉数据处理的操作属于前置 ETL 的环节,于是自己写代码实现:数据字段的拆解、截取、更换字段名等操作。

实际上,这些操作用 ingest 几行语句就能快速搞定。

知识体系的梳理,我推荐用脑图,定期的把一些零散的知识点画一画。比如如下的几个点细分知识点非常琐碎,需要自己梳理建立完整体系认知。

Elasticsearch 检索分类脑图

Elasticsearch 数据类型脑图

Elasticsearch 全景技术体系脑图

画的多了,就形成了自己的知识体系。

如下视频是我用 30 + 分钟的时间徒手敲了《Elasticsearch 最少必要知识》的核心知识点,这也是当前 Elastic 认证考试考纲的全部知识点。

2.5 以考带练

可以考虑参加 Elastic 认证考试,通过以考代练的方式,强迫自己夯实基本功。

之前分享过认证考试的文章比较多,不再赘述。

对认证感兴趣的推荐阅读:

如下是 BAT 大佬对认证工程师的评价,至少在你简历不那么出彩的时候,认证工程师算是一个简历的亮点。

有了这个亮点,入大厂的敲门砖才更有力!

死磕 Elasticsearch 知识星球已通过 46 位 认证工程师(截止 2021年3月11日),其中三位拿到了大厂高薪 offer:

  • 微软 offer
  • 阿里 offer
  • 拼多多 offer

以上,通过进一步的刻意练习,助力构建知识体系,期望有助于你快速进阶!

3、源码原理篇:掌握本质,一通百通

目前来看只有互联网大厂才会做 Elasticsearch 内核级别优化,所以大厂面试的第一个问题通常是:“有没有看过 Elasticsearch 源码?”。然后再问一些底层原理、优化等实战问题。

PS 补充一点:大厂必然会问基础算法,建议提前力扣刷题备战。

单纯的读源码容易碰壁、经常会是“一头雾水、不知所云”。所以建议结合实战问题,带着问题看源码。

也推荐开发一款 Elasticsearch 插件,开发的过程加强对 Elasticsearch 代码和接入逻辑的认知。

3.1 推荐1:张超老师的《Elasticsearch源码解析与优化实战》书

  • 推荐原因:市面上写Elasticsearch 源码的唯一一本书,豆瓣评分7.5+。
  • 推荐原因2:我请过张超老师做过一次技术分享,球友们都一致反馈他研究的很深。

结合源码解读书,有必要的时候再去翻源码,这样学习相对更快,至少有了脉络可循、能少走弯路。

3.2 推荐2:《Lucene 实战》

  • Elasticsearch 底层是 Lucene,掌握 Lucene 的原理对于理解Elasticseach 非常有帮助。
  • 翻译实在不敢恭维,但貌似实体Lucene 书实在是稀缺,可以大致看一下。

3.3 推荐3:《Lucene 原理与代码分析完整版》电子书

以上,期望有助于你理解底层原理!

4、系统学习的误区

4.1 买课内卷化

开工忙非常理解。但是,买课的目的得进一步明确:0.1元课、1元课、9.9元课、19.9元课等都非常多,各大机构竞争已经出现了白热化。我自己也帮推课,站在 IT 培训公司 或者 IT 知识付费公司推广的角度能理解,吸引用户无可厚非。

但,之前咱们也强调过,买课不是目的,和买书一个道理,再直白点说:

买了书不看和买了课不看,是一模一样的逻辑。

买的时候心里是这样的:

  • X 天掌握一门技能,太牛逼了。
  • X 天后,我就成大牛了。
  • X 天后,我就建立完整知识体系了。
  • 我擦,业界大佬的课,得学啊!
  • 我擦,群里球友或身边同事都买了,我也得买啊。
  • 我擦,买它买它买它。。。。

买了那一刻瞬间的感觉,很舒服、很踏实、仿佛产生了中彩票的幻觉。

但是,买完之后没多久呢?

  • XXX,你的bug,过来看一下。
  • XXX,年度规划会议,记得参加。
  • XXX,产品需求讨论会议,记得参加。
  • XXX,架构选型会议,记得参加。
  • XXX,开发问题讨论、敲代码。。。
  • XXX,不行,今天任务还没完成,加班中。。。

如此反复,进入了 996 的死循环。

几天后,或者几十天后,又发现课程推广广告,哎,我不是买过这门课,我擦,忘记听了、忘记学了。

课不在多,能学才灵!

课不在多,够练就行!

练起来比买起来更重要。

买不可怕,买了不学才可怕!

学不可怕,学了不练才可怕!

练不可怕,练了不用才可怕!

4.2 注意力分散

我多次引用过李笑来的话:注意力 > 时间 > 金钱。

真的是这样——你的注意力在哪里?你的成就就在哪里!

过年的时候跟朋友聊天提到了读书的问题,“不怕你笑话,我好几年没有读过一本书了”。

我是非常能理解的,工作之后加上结婚有了孩子之后,时间真的是很散的,如果工作是996的话,没时间读书真的是很务实的一句话。

要注意的是:正如罗胖所说的——“国民总时间”是恒定的。

如果不读书,工作、生活或者其他方面有所专长足以养家糊口、家庭富足无可厚非。但,怕就怕把相对仅有的稀缺的休闲时间用在了:刷视频、刷新闻上。

即便我能坚持写博客,但我始终认为我的自制力很差,容易刷视频上瘾。之前采取暴力的方式卸载掉APP,实际上不能本质解决问题。

现在缓和的解决方案,给自己休闲(刷视频、刷新闻)定个时间,过了点就得干正事:读书、学习、实践等。

并且,效果不好的话,一言不合我就会打卡学习,通过打卡一句话总结每天干的事情,很笨但很有效。

推荐阅读:打卡学习——应对焦虑的一剂良方!

最后,我想说:把注意力集中在长期的、有意义的事情上。越集中、越幸运!

5、小结

说是系统的学,不知道大家看完了感觉是怎么样的?够不够系统?

没有普适的方法,大家结合自己的实际业务不断刻意练习,找到属于自己的方法论才是王道!

毕竟是一家之言,如果有不对的地方,欢迎指正。也欢迎大家留言交流学习心得、方法等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、基础篇:零基础如何学 Elasticsearch ?
    • 1.1 零基础书籍推荐
      • 推荐1:《这就是搜索引擎》
      • 推荐 2:《Elasticsearch 权威指南》2.X 中文翻译电子书
      • 推荐 3:《Elasticsearch 实战》纸质书
    • 推荐4:结合 ECE 考纲、《Elasticsearch 最少必要知识》电子教程啃官方文档。
      • 1.2 零基础入门视频教程推荐
        • 1.3 “零基础”是相对的、不要怕!
          • 1.4 形成自己的学习路线图
            • 1.5 “零基础”学习方法论——光看不够,搭建环境 + 练起来更重要!
            • 2、进阶篇:实践加深认知
              • 2.1 刻意学习一遍官方文档
                • 2.2 实战中刻意练习
                  • 2.3 上学下帮的练习
                    • 2.3.1 向上学
                    • 2.3.2 向下帮
                  • 2.4 逐步构建属于自己的知识体系
                    • 2.5 以考带练
                    • 3、源码原理篇:掌握本质,一通百通
                      • 3.1 推荐1:张超老师的《Elasticsearch源码解析与优化实战》书
                        • 3.2 推荐2:《Lucene 实战》
                          • 3.3 推荐3:《Lucene 原理与代码分析完整版》电子书
                          • 4、系统学习的误区
                            • 4.1 买课内卷化
                              • 4.2 注意力分散
                              • 5、小结
                              相关产品与服务
                              Elasticsearch Service
                              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档