1. 程式人生 > >elasticsearch原始碼分析——原始碼編譯

elasticsearch原始碼分析——原始碼編譯

分析原始碼,首先要從搭建編譯執行環境開始
之前用solr比較多,限於solr不能做動態擴容,現在轉戰elasticsearch

專案 版本
執行環境 windows
IDE intellij 2018.1.4
JDK 1.8.0_171
elasticsearch 5.5.1
gradle 4.3
maven 3.5.0 總是用得上的

備註:之前一直都用的是1.8.0_25,但是吧,編譯的時候直接說這個版本的bug,編譯不成功。好吧。
最早接觸的就是es5.5.1版本,有想過使用6.2.3,但是吧,編譯的時候又是一堆問題,JDK要9以上的。索性還是用5.5.1的版本吧。

不同的es版本對gradle的要求也不一樣

編譯前準備

原始碼

JDK

不多說了

gradle

官方地址:https://gradle.org/install/
試過在mac os上安裝,配置完brew[連線有說明如何安裝],下載還是很方便的。

maven

編譯原始碼

maven源

國內的maven源,阿里還是很好用的。
build.gradle檔案中的allprojects新增repositories

allprojects {
  repositories {  
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/"
} } }

編譯

gradle clean
gradle idea
gradle run

  如果沒有什麼意外,就等待執行完成,就會在原始碼目錄下生成,distribution\build\cluster\run node0\elasticsearch-5.5.1-SNAPSHOT這樣一個路徑。
  現在就開啟IDE,匯入原始碼目錄,前提前面的gradle都已經安裝。
  

啟動引數配置

VM options配置 -Des.path.home="E:\Projects\es-6.2.3\source\elasticsearch-5.5.1\distribution
\build\cluster\run node0\elasticsearch-5.5.1-SNAPSHOT" -Dlog4j2.disable.jmx=true Main class: org.elasticsearch.bootstrap.Elasticsearch

6.2.3好像還要配置config目錄

* org.elasticsearch.bootstrap.Elasticsearch 是啟動入口,原始碼分析的話從這地方就能看到,es是如何初始化。Node載入,Guice注入*

寫在前面的話

  1. 熟悉一下java 8的函式式變成思維lambda,函式引用,以及基礎的泛型
  2. elasticsearch是非同步式框架,所以要做一定的準備
  3. 很多時候使用了url註冊方式,進行訊息的相互傳遞,這個熟悉之後,有些邏輯就好梳理
  4. 要對lucene有一定的瞭解 docvalue,列存,查詢邏輯
  5. 暫時想到這麼多