elasticsearch原始碼分析——原始碼編譯
阿新 • • 發佈:2018-12-27
分析原始碼,首先要從搭建編譯執行環境開始
之前用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注入*
寫在前面的話
- 熟悉一下java 8的函式式變成思維lambda,函式引用,以及基礎的泛型
- elasticsearch是非同步式框架,所以要做一定的準備
- 很多時候使用了url註冊方式,進行訊息的相互傳遞,這個熟悉之後,有些邏輯就好梳理
- 要對lucene有一定的瞭解 docvalue,列存,查詢邏輯
- 暫時想到這麼多