Elasticsearch源碼分析 - 源碼構建


本篇文章首發於頭條號Elasticsearch源碼分析 - 源碼構建,歡迎關注我的頭條號和微信公眾號“大數據技術和人工智能”(微信搜索bigdata_ai_tech)獲取更多干貨,也歡迎關注我的CSDN博客


本篇介紹一下如何從源碼構建Elasticsearch,構建Elasticsearch源碼是學習和研究Elasticsearch源碼的基礎,有助於更好的了解Elasticsearch。

環境准備

環境/軟件 版本 備注
OS Ubuntu 14.04 LTS
Gradle 5.4
Java 9.0.4+11 Oracle Corporation 9.0.4 [OpenJDK 64-Bit Server VM 9.0.4+11]
Elasticsearch 6.2

從源碼構建Elasticsearch需要注意下面幾個問題:

1、從源碼構建Elasticsearch需要使用Gradle,因此需要確認下是否安裝了gradle,可以參考官網安裝文檔安裝,安裝步驟如下:

mkdir /opt/gradle
unzip -d /opt/gradle ./下載/gradle-5.4-bin.zip
ls /opt/gradle/gradle-5.4
#添加環境變量
vi ~/.bashrc
#在 ~/.bashrc 文件下面加上這句
export PATH=$PATH:/opt/gradle/gradle-5.4/bin
#使新增的環境變量即時生效
source ~/.bashrc
#檢查 gradle 是否安裝配置成功
gradle -v

2、Elasticsearch編譯和運行時所要求的JDK版本是不一樣的,以V6.2版本為例,Runtime要求最低JDK8,Compile要求最低JDK9。不同版本的Elasticsearch應該如何確定所需JDK運行時和編譯的版本呢?可以在Elasticsearch的源碼里找到,如下:

/*
 * Elasticsearch <= v6.3
*/
//代碼文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8
static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_9
/*
 * Elasticsearch >= v6.4
*/
//代碼文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
//這段代碼對應的配置文件分別是下面這兩個:
//buildSrc/src/main/resources/minimumCompilerVersion
//buildSrc/src/main/resources/minimumRuntimeVersion
JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumRuntimeVersion").text.trim()
)
JavaVersion minimumCompilerVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumCompilerVersion").text.trim()
)

3、在終端執行構建操作前建議把終端改為bash,不然可能會有點問題。

開始構建

具體步驟如下:

#下載源碼
git clone https://github.com/elastic/elasticsearch.git
#進入源碼目錄
cd elasticsearch
#切換到一個穩定分支
git checkout 6.2
#構建源碼
./gradlew assemble

看到下面輸出表示構建成功了。

BUILD SUCCESSFUL in 10m 15s
505 actionable tasks: 505 executed

測試

構建成功后就可以啟動Elasticsearch了,如下:

#在源碼目錄下執行
./gradlew run

啟動成功后瀏覽器打開127.0.0.1:9200顯示如下:

{
  "name" : "node-0",
  "cluster_name" : "distribution_run",
  "cluster_uuid" : "E3qa7TIkTTGNP32WizSyXg",
  "version" : {
    "number" : "6.2.5",
    "build_hash" : "e38fe8a",
    "build_date" : "2019-04-25T01:27:03.655047Z",
    "build_snapshot" : true,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM