如何使用正确的姿势学习Elastic

一直以来,忽略了对博客的重视。一直以来我从事Elastic的教育工作,很多资料也属于内部资料,终于,我狠下心来,免费把我的心得共享给大家,希望对各位有所帮助。

1、初学者不建议把看书作为首选方式

对于学习Elastic的学习者而言,我不推荐把书籍作为首选的学习方式,最好是作为一种辅助手段或者把书籍当成一种工具,用到的时候去翻阅。当然则是建立在你对书籍大纲有一定的熟悉程度的基础上,以下是我的理由:

  1. ELastic官方对Elastic Stack的版本更新速度非常快,这固然有好处,证明了Elastic的活跃程度很高,但是随之也带来一些问题:书籍的更新速度非常慢,通常某一本书是针对Elasticsearch的某一个版本编写的,比如ES 7.6,书的版本更新远远跟不上Elastic官方对其版本的更新速度,而ES本身不同版本之间的区别还是比较大的,比如Client由Transport变成了、比如Scripting的脚本语言由Grovvy变成了painless等等。
  2. 阅读书籍尤其是技术类书籍的速度通常是比较慢的,其中包含一些代码类的案例手敲起来非常费劲。技术的迭代本身就很快,要学的东西很多,我们要提高自己的学习效率,就必须选择更加高效的方式。
  3. 书籍的携带不便于我们随时随地学习,只能在一个固定的场所学习,而电纸书或者电子书阅读更加适合顺序阅读,对于我们经常需要跳页的情况又很不方便。
  4. 和付费视频一样,需要筛选成本,当然这也不仅仅是书籍存在的问题,不过也应该是我们应该考虑的问题,现在的书动辄百元,谁的钱也不是大风刮来的。

2、找到自己的“领路人”,少走弯路

如果有条件,找一位老师是最好的,你的老师可以是你的前辈、朋友、甚至是一套视频。千万不要轻视老师的作用,合理的指引可以让你少走弯路,减少时间的浪费,也许你三天没有解决的问题,经过指点,五分钟你就解决了。不过成年人的世界里没有白帮的忙,别人帮你解决问题,即便嘴上不说,其实你也欠下了人情,次数少了还行,次数多了谁都受不了。现在是一个知识付费的时代,即便付费付的不是现金。所以请教问题还是要先尝试自己解决,实在不行再去请教。其实付费找老师也是一个选择,比如报名一个培训班,当然花钱之前要擦亮自己的眼睛,钱可以花,但是不能白花。为了避免广告嫌疑,不挂任何链接。

3、学会查阅官方文档

官方文档毫无疑问是学习Elastic最权威的地方,也是覆盖知识面最全的地方,但是也正是因为其文档太多,如果想要系统的学习并不是很好的选择,而最好将其当做查阅工具。因为对于大多数人并非所有的东西我们都一定要学习,而且学习过程应该有一个适合我们的一个大纲。也就是先学什么后学什么。下面是我列举的几个官方文档的优缺点,供大家参考:

首先是优点

  1. 权威:对知识的讲解一般不会出现错误。
  2. 覆盖范围广:几乎覆盖所有可能遇到的问题
  3. 最新:新推出的任何版本肯定都是官方首发,其次才会出现对应的视频、博客、书籍等。

下面说说缺点

  1. 不系统:对于知识点的梳理并非由浅至深,也由于其文档“太全”,内容多而导致学习筛选成本高。

  2. 语言问题:英文对大多数国内的IT从业者来说还是不太友好,即便我们有google翻译插件,原生文档的翻译经常会偏离其原本含义,或者翻译成中文之后难以理解,有的文档直接翻译错误。而且翻译页面之后,代码案例将会丢失格式,不便于我们阅读。也许你觉得你的英文足够好,但是歪果仁的脑洞是很惊奇的,有些文档英文好也不见得能理解的透彻,因为官方文档本身的描述也是基于老外的脑洞去编写的,理解起来比较生硬,比如我举个例子, 比如官方文档在对ES几何形状(geo_shape)空间关系(Spatial Relations)的讲解上对四个参数的描述:

    1.INTERSECTS- (default) Return all documents whose shape field intersects the query geometry。
    2.DISJOINT- Return all documents whose shape field has nothing in common with the query geometry 
    3.WITHIN- Return all documents whose shape field is within the query geometry。
    4.CONTAINS- Return all documents whose shape field contains the query geometry
    

    对自己英文有自信的话可以尝试自己翻译,或者使用百度、谷歌翻译去查看翻译结果,看看是否能理解其含义。对于例子,我在Elastic之家用了一个理解起来非常容易的例子对其进行了讲解,有兴趣的话可以关注:http://www.elastic.show或者http😕/www.elastic.show:9084/,目前可能需要添加端口号进行访问。

  3. 网速慢:由于是国外的网站,大部分用户访问速度是很慢的,下载速度也很慢,当然我在也为大家提供了常用的下载列表Elastic之家,给网络不好的同学提供畅快的下载体验。

  4. 更新太快:这本应是好事儿,但是也正是因为其更新速度快,对很多人造成了困扰。学习成本高,可能刚学没多久的东西就有些过时了。

4、合理利用谷歌百度

合理的利用搜索引擎解决问题能极大的提高学习效率。搜索引擎可以解决大多数我们日常开发学习中遇到的问题,但不可否认的是,这需要很大的筛选成本,因为国内目前的互联网现状就是抄袭复制极为严重,相当一部分帖子、博客内容为只字不差复制他人内容,有的内容质量差,毫无学习价值。当然一片高质量的文章也许对我们会有很大的帮助,但是如何能看到这篇文章就需要我们一篇一篇文章的去筛选阅读甄别,无形中浪费了我们的时间。举个例子:在Elasticsearch中讲解Adjacency Matrix Aggregation也就是邻接矩阵知识点的内容,百度的结果几乎无一原创,基本上就是官方文档用谷歌翻译或者百度有道翻译插件翻译成中文,然后原封不动的拷贝过来,不信你可以分别在百度搜索“Elasticsearch Adjacency Matrix Aggregation”和在ELasticsearch官网搜索“Adjacency Matrix Aggregation”翻译成中文进行对比。如果我所言有假,欢迎回来打脸。当然我并非说抵制搜索引擎搜问题,毕竟我自己也在用,但是你需要练就一双“鹰眼”,明辨对错。

5、重视动手能力

我认为这一点尤为重要,只看不写等于不会,只看不写等于不会,只看不写等于不会,重要的事情说三遍。你看了视频或者博客,你认为自己会了不代表自己真的会了,涉及到代码的地方必须要自己动手敲几遍,对至少是几遍,一遍是远远不够的。如果遇到原理性的东西,自己去写博客,不要去复制别人的博客,这样不但对你自己毫无用处,当别人遇到问题去搜索引擎里找答案的时候,你复制来的东西只会给别人找到答案制造障碍,纯粹是在给互联网制造垃圾。所以我鼓励你自己去写,反对去复制别人的东西,人家原创的东西需要你去复制么?

然后就是,尽量去把自己所学的东西应用到实际的项目中去。有人可能会觉得我们公司根本没有这样的环境,我工作的内容也不涉及到我学的东西。那你就去逼自己,没有条件自己给自己创造条件,没有那么完美的事儿,没有机会就抓紧时间做好准备,等机会来了才能抓住机会。

6、主动学习

为师育人讲究授人以鱼不如授人以渔,你给别人鱼不如教会他如何打鱼,不然迟早一天他还是会饿死。反过来我们学东西也是要先学会学习的方式方法。一味的苦读付出,找不对方向,就像无头苍蝇乱撞,轻者多走弯路,浪费精力;重者自取灭亡。为什么猪八戒好吃懒做最后还能成佛?因为选对了老板!有时候选择大于努力,朝着对的方向迈出一步,也比朝着错的方向努力十步要强。

当我们下定了决心要改变自己,要锤炼自己,也就是代表你已经箭在弦上蓄势待发,就差瞄准把心奋力一击了。行走的路上遇到障碍不可怕,用力踢开它。凡事首先尝试靠自己的力量解决问题,不要对别人产生依赖,学会自己打鱼,逼自己一把,不要饿了就知道伸手。实在无法解决再找他人求助,避免浪费时间,这也无可厚非。言而总之,学习要主动、不能让别人推着你走,要学会学习的方式,而不是别人走一步,你跟一步。