elasticsearch 源碼本地環境搭建


elasticsearch6.0.0 源碼本地環境搭建步驟如下:

  • 1、資源准備

 ElasicSearch版本:6.0.0: https://github.com/elastic/elasticsearch

安裝jdk(jdk1.8以上,本人用的是1.8.0_131)

安裝gradle(3.3以上,本人用的是4.3.1) 需要安裝環境變量網上有好多,下載地址 http://services.gradle.org/distributions/

  • 2、上面資源都准備好了后 ,開始

1)配置軟件包倉庫源地址 (此步驟因為需要從包倉庫jcenter或者apache的maven庫下載依賴額所有jar,耗時長,使用國內的倉庫源,節省時間)

在C:\Users\用戶\.gradle下建立init.gradle文件

編輯文件內容如下:

allprojects{
  repositories {
    def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
    all { ArtifactRepository repo ->
    if(repo instanceof MavenArtifactRepository){
    def url = repo.url.toString()
    if (url.startsWith('https://repo.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
      remove repo
    }
  }
}
  maven {
     url REPOSITORY_URL
   }
 }
}

2)編輯${elasticsearch源碼根目錄}\distribution\build.gradle文件,藍色部分替換為如下。

buildscript {
  repositories {
    maven {
      url "http://maven.aliyun.com/nexus/content/groups/public/" 
    }
  }
  dependencies {
    classpath 'com.netflix.nebula:gradle-ospackage-plugin:3.4.0'
  }
}

3)gradle 安裝成功后 打開cmd控制台 進入elasticsearch源碼根目錄,

執行gradle idea。(idea導入源碼前,必須進行此步驟,否則會報錯)

4)IDEA導入工程,導入的時候需要設置gradle_home,配置為gradle的安裝根目錄。

勾選Offline work(否則會連到官網私服下載,會超級慢)和Use local gradle distribution。

gradle 項目導入idea碰到的問題:

導入idea時候執行gradle idea,可以把項目編譯成idea項目,但后續導入idea還是報錯,

提示jdk版本只能是1.8或以上,如果是這樣,檢查環境變量中的jdk配置是否正確

5)編譯代碼 在core下 的jar 編譯

 6)啟動elasticsearch:在 core下org.elasticsearch.bootstrap.Elasticsearch 這個類 右鍵運行main方法

 報錯 啟動包es.path.conf未設置

解決方法 :配置jvm參數

 

//這個是自己項目里面distribution 下的路徑
-Des.path.home=F:\es_code\elasticsearch-6.0\distribution\src\main\resources
-Des.path.conf=F:\es_code\elasticsearch-6.0\distribution\src\main\resources\config

 

// 繼續啟動 之后報錯
2017-12-06 19:18:42,999 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

解決辦法

//在里面加上 
-Dlog4j2.disable.jmx=true

報錯 Unsupported transport.type

解決辦法:把相同版本的es二進制安裝包中modules目錄(\distribution\src\main\resources\modules目錄內容拷過來)下內容拷貝過來。

報錯 stirng index out of range -1

跟蹤源碼,發現如下原因:在編譯的時候,編譯打包版本信息不一致造成的,這樣index版本號就出錯了。

解決方法  修改 core 下面的 org.elasticsearch.Build.java 74行,

// isSnapshot = true; 

isSnapshot = false;

注:有的時候有可能下載下來的源碼 打包的版本是6.1.0-snapshot 本人就碰到了這種情況下載的是6.0的源碼但是在編譯的 時候發現 6.1.0-snapshot 是這個版本

改完后有可能還是不行,跟蹤源碼發現 org.elasticsearch.Build.java

 主要做驗證這塊是Version里面的版本信息,修改下這個里面的當前版本就行了。改成自己目前的版本信息,再次啟動OK。

 


免責聲明!

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



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