渣渣菜雞為什麼要看 Elasticsearch 源碼?

來源:互聯網
上載者:User
004

前提

人工智慧、大資料快速發展的今天,對於 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 確實火,公司幾乎都用的,所以學習下還是有必要的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.