渣渣爲什麼要看 ElasticSearch 源碼?

前提

人工智能、大數據快速發展的今天,對於 TB 甚至 PB 級大數據的快速檢索已然成爲剛需,大型企業早已淹沒在系統生成的浩瀚數據流當中。大數據技術業已集中在如何存儲和處理這些海量的數據上。Elasticsearch 作爲開源領域的後起之秀,從2010年至今得到飛躍式的發展。 Elasticsearch 以其開源、分佈式、RESTFul API 三大優勢,已經成爲當下風口中“會飛的豬”。

在我的電腦本地寫了幾篇 ElasticSearch 的源碼解析了,回過頭來想想應該也寫一篇爲何我會去看它的源碼?

爲什麼呢?下面我講講自己從接觸搜索到現在看源碼的過程!

關注我

zhisheng

轉載請務必註明原創地址爲:http://www.54tianzhisheng.cn/2018/08/24/why-see-es-code/

第一次接觸搜索

搜索,我們首先想到的是搜索引擎:Google、百度,這個就算是接觸的最早的了。

我自己項目裏面接觸搜索是大二暑假那時練習的一個項目,裏面用了 Solr,然後當時自己也稍微瞭解了下,並用在了項目裏面。

第二次接觸搜索

從第一次項目裏面用到了搜索,後面自己對這方面就比較感興趣。再一次接觸搜索是實習的時候進公司。第一件事情就是被老大叫的去學習搭建 Elasticsearch 集羣,於是乎,電腦就裝了三個虛擬機,Elasticsearch 就一個個的裝了起來了。也記錄了博客下來:Elasticsearch 系列文章(二):全文搜索引擎 Elasticsearch 集羣搭建入門教程,當時搭建的時候 ES 的版本纔剛從 2.x 升級到 5.x 呢,截止本文時間 2018.08.04,現在 ES 版本已經是到 7.0 了,這版本升級是真的的快,這也說明了 ES 的活躍度很高,背後的開發工程師維護也快,側面突出要去看它源碼的重要性。

當時自己在本地測試搭建集羣后,給分配了另外一個任務就是去了解 ES 中的自帶分詞、英文分詞、中文分詞的相同與差異、以及自己建立分詞需要注意的點。於是乎:當時在公司 wiki 貢獻了這篇文章:Elasticsearch 系列文章(一):Elasticsearch 默認分詞器和中分分詞器之間的比較及使用方法。這篇文章幾乎已經把市面上所有的分詞都寫進去了,包括他們的相同點、不同點、如何使用、如何自定義分詞器。

然後還有就是我同組的一個同學,她的任務就是 2.x 升級到 5.x 中 mapping 的大改變有哪些?後面我也看了她總結的文檔,很詳細!

在這次接觸了 ES 後,因爲我自己本地已經有環境了,所以自己測試了一些功能,給 ES 安裝插件(IK、x-pack、支持 sql 的、),後面自己也去測試 ES 的索引、文檔、REST API。

第三次接觸搜索

由於是自己對其感興趣,所以後面就去找了些相關的視頻,比如:中華石衫的《Elasticsearch 頂尖高手系列-高手進階篇》幾個系列視頻教程個人感覺還是不錯的,看完這幾個系列估計入門肯定是沒有問題的。版權原因,不提供下載鏈接。

另外就是《Elasticsearch 權威指南》翻譯的版本,翻譯還沒有全,可以去看看,講得很詳細的,市面上應該還沒有哪本書講的有這麼清楚,如果英文不錯的可以直接啃英文吧。

還有就是官網的文檔了,非常非常詳細,還有 demo,2.x 版本的是有中文的官方文檔,可以湊合着看。

學習新東西,要學會先看官方文檔,何況 Elasticsearch 的官方文檔這麼詳細呢!

第四次接觸搜索

後面實習的時候,又分配了公司中間件監控的兩個模塊:Elasticsearch 和 HBase 組件的監控。於是乎,再次有機會接觸 Elasticsearch 了,這次主要還是利用 Elasticsearch 自帶的 REST API :_cluster/health_cluster/stats_nodes_nodes/stats 去獲取到集羣的健康信息、節點信息(內存、CPU、網絡、JVM等信息)。爲了做這個項目自己當時也去找了網上很多類似的文章參考常用的監控指標和他們是怎麼做監控的。我當時的任務主要還是採集信息,然後存到公司大項目的 influxdb 中,最後用 grafana 展示出來,後面我組的運維大佬給我看了監控大盤,界面挺酷炫的,哈哈哈,牛逼!

當時寫的兩篇博客:

1、Elasticsearch 系列文章(三):ElasticSearch 集羣監控

2、Elasticsearch 系列文章(四):ElasticSearch 單個節點監控

取之網絡,還之網絡,希望給後面做類似任務的小夥伴給點參考意見!

再就是自己搭建 ELK(ElasticSearch, Logstash, Kibana)日誌分析平臺,然後玩了下!

搭建環境博客:Elasticsearch 系列文章(五):ELK 實時日誌分析平臺環境搭建

第五次接觸搜索

後面就沒怎麼接觸 ElasticSearch 了,一直忙着其他的東西。

實習辭職後,畢業出來找工作的那段日子,自己又花了一星期稍微過了一遍 《Elasticsearch 權威指南》 這本書,話說還幫我面試挺過不少關呢,哈哈哈!因爲我項目裏寫了 Elasticsearch 的監控,如果你對 Elasticsearch 其他的不熟悉,面試官稍微問些其他關於這方面的,那就不知道就有點尷尬😅了,所以還是準備了下。看完之後應付面試沒多大的問題。

第六次接觸

看起來我接觸了 Elasticsearch 很久了,其實真正項目裏面是沒有用到 Elasticsearch 做過項目的,沒有用到 Elasticsearch 的搜索做什麼項目,於是自己當時找工作其實也打算找到工作後看能不能自己做個項目或者公司項目裏面用用 Elasticsearch 呢?

結果在新公司新項目裏,很快就用到了。只不過這次不是 Java 項目裏面用了,而是和 GoLang 整合。不過 API 都差不多,多熟悉幾次就很快上手了,關鍵還是要懂 Elasticsearch 如何構造 DSL 查詢語句,這樣再轉換成 GO 裏面的 API 就快了。

還有就是公司裏剛好有個中科院研究生大佬,他就寫過 Elasticsearch 這塊的書籍《從 lucene 到 Elasticsearch 全文檢索實戰》,另外他的 CSDN 博客也很火,閱讀量很高,感興趣的可以買本書支持下。

中途自己遇到 Elasticsearch 實在不會的問題也會主動去找大佬諮詢,然後大佬耐心教教我這個渣渣菜雞,在文章這裏感謝下大佬這段時間的關照。

萌生閱讀源碼的想法

既然接觸了這麼久的 Elasticsearch ,項目裏用過,書籍也看過,雖然還不是很熟,但是如果看看它的源碼是不是會讓我對它的印象更深呢?

說幹就幹,晚上回家就從 GitHub clone 了源碼在本地,那時剛好回家,就在火車上直接用 VS code 看了會源碼,也沒有在 ide 裏 debug 起來。

寫這篇文章的時候已經把 Elasticsearch 的整個啓動流程(加載讀取配置、加載插件等)、如何支持 REST API 看了下,後面會在下班後回家繼續閱讀源碼,繼續分享我的源碼解析的。

有想法就去幹,不嘗試下,怎麼知道適不適合你?

總結

其實閱讀源碼的主要原因還是自己感興趣;另外就是這東西現在項目裏確實也用到了,如果我對源碼熟悉的話可能會對我的理解會更加透徹點;還有就是 Elasticsearch 確實火,公司幾乎都用的,所以學習下還是有必要的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章