渣渣爲何要看 ElasticSearch 源碼?

前提

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

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

爲何呢?下面我講講本身從接觸搜索到如今看源碼的過程!sql

關注我

zhisheng

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

第一次接觸搜索

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

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

第二次接觸搜索

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

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

而後還有就是我同組的一個同窗,她的任務就是 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 展現出來,後面我組的運維大佬給我看了監控大盤,界面挺酷炫的,哈哈哈,牛逼!

當時寫的兩篇博客:

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

二、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 確實火,公司幾乎都用的,因此學習下仍是有必要的。

相關文章
相關標籤/搜索