天天看點

如何系統的學習 Elasticsearch ?

1、基礎篇:零基礎如何學 Elasticsearch ?

常見問題:“ES 零基礎入門書籍看什麼比較好?”

認知前提:書籍的速度已遠落後于 ES 版本更新的速度。ES 幾乎每個月釋出一個版本,更新很快。

市面上的書籍,尤其國外翻譯書籍還大多是:1.x,2.x,5.x ,6.x 的版本,更新較慢。

如何系統的學習 Elasticsearch ?

有幾本7.X的書籍,我沒有買實體書,不太有發言權。不過:1.X——6.X全部實體書我都買了,也都看完了,可以說有發言權。

相比于實體書籍,我更推薦官方文檔,但鑒于“零基礎”讀者對英文的恐懼,書籍、視訊、學習路線等推薦清單如下:

1.1 零基礎書籍推薦

推薦1:《這就是搜尋引擎》

如何系統的學習 Elasticsearch ?

這是一本介紹搜尋引擎原理的書,有了搜尋引擎原理的認知再去了解 Elasticsearch 會有“居高臨下”俯視的感覺。

推薦理由 1:長銷書(比暢銷書高一個level)、作者是中科院軟體所博士、包含大量圖解、通俗易懂。

推薦理由 2:貌似在 medcl 大神(Elasti中文社群創始人、Elastic中國第1位員工) 書架也有這本書。

推薦 2:《Elasticsearch 權威指南》2.X 中文翻譯電子書

如何系統的學習 Elasticsearch ?

位址如下:

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

推薦理由 1:雖然基于 2.X,但底層原理的介紹并不過時,值得一看。

推薦理由 2:wood大叔(攜程架構師、Elastic 中文社群排名第1名)也曾經多次推薦且他看過2遍以上+。

推薦 3:《Elasticsearch 實戰》紙質書

如何系統的學習 Elasticsearch ?

這本書是《Elasticsearch IN ACTION》 的翻譯版本。

推薦理由 1:作者之一已入職 Elasticsearch。

推薦理由 2:翻譯作者是極客時間數學課的作者:黃申博士,翻譯還可以,至少比《 Lucene 實戰 》翻譯好 100 倍。

推薦理由 3:這本書是 Medcl 大神寫的序。

推薦4:結合 ECE 考綱、《Elasticsearch 最少必要知識》電子教程啃官方文檔。

《Elasticsearch 最少必要知識》 位址:

https://www.yuque.com/deep_elasticsearch/tzcm9n
如何系統的學習 Elasticsearch ?

推薦理由 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

如何系統的學習 Elasticsearch ?

通過類比:就可以由已有認知過度到未知認知,便于快速習得技能。

建議把基礎内容分為兩部分,

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 ?

如果感覺吃力,可以看一下技術部落格資源:

全網最牛逼的 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 學習者來說大有裨益。