ElasticSearch本地調測環境構建


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

1:安裝JVM(JVM1.8以上)

2:安裝gradle(3.3以上)

下載:gradle下載地址:http://services.gradle.org/distributions/,下載4.3版本。(本人第一次安裝的是4.4.5,結果到后面執行gradle idea指令的時候,下載不到gradle-logger-4.4.5的包,阿里的maven或者jcenter都沒有,最新的歸檔的只有4.3)

環境變量:配置GRADLE_HOME到你的gradle根目錄當中,然后把%GRADLE_HOME%/bin加到PATH的環境變量。

檢查:進入cmd控制台,執行gradle -V,會輸出Groovy,JVM等的版本,說明安裝OK

3:下載elasticsearch源碼:

下載ElasticSearch代碼:https://github.com/elastic/elasticsearch,(本人下載的是6.0.0版本):

4:配置軟件包倉庫源地址(如果忍受得了下載的網速,此步驟可選。此步驟因為需要從包倉庫jcenter或者apache的maven庫下載依賴額所有jar,會很漫長,耗費了40分鍾,使用國內的倉庫源,只需要5分鍾即可)

  • 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

        }

    }

}

  • 編輯${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'

  }

}

5:執行gradle idea

cmd控制台進入elasticsearch源碼根目錄,執行gradle idea。(idea導入源碼前,必須進行此步驟,否則會報錯)

 

 

6:ElasticSearch工程導入IDEA

IDEA導入工程,導入的時候需要設置gradle_home,配置為gradle的安裝根目錄。勾選Offline work(否則會連到官網私服下載,會超級慢)和Use local gradle distribution。

7:編譯

IDEA中view->tool windows->gradle點擊,在gradle project視圖欄目里找到core工程,點擊build編譯,也可以選擇jar,編譯后會在core\build\distributions\下生成elasticsearch的jar包。

 

 

8:啟動

Elasticsearch的啟動類:org.elasticsearch.bootstrap.Elasticsearch,右鍵運行。

錯誤一:

Error:Unable to make the module: core_main, related gradle configuration was not

執行

解決方式:刷新gradle工程

 

問題二:啟動報錯

 

解決方式:

搞了半天是IDEA和gradle的兼容性bug問題:

https://stackoverflow.com/questions/42587487/noclassdeffounderror-after-intellij-idea-upgrade

編譯無問題,運行時找不到依賴的類。

 

根據所說,此bug在IDEA的新版本解決了,but我的IDEA版本是:2016.3.4

官網下載IDEA 2017.2.5版本:

https://www.jetbrains.com/idea/download/previous.html?fromIDE=

新版本安裝后,此問題解決。

問題三:啟動包es.path.conf未設置。

 

查看源碼的啟動腳本:

distribution\src\main\resources\bin\下elasticsearch.sh中:

 

所需的配置文件在源碼的位置:

G:\github-java\elasticsearch-6.0.0\distribution\src\main\resources\config。故而設置兩個JVM環境變量即可:

 

再次啟動此問題解決。

問題四:access denied ("javax.management.MBeanTrustPermission" "register")

 

解決方式:設置JVM環境變量如下:-Dlog4j2.disable.jmx=true

 

問題五:加載不到plugin。

解決方式:參照發行版,發行版目錄下有空的plugins目錄,在G:\github-java\elasticsearch-6.0.0\distribution\src\main\resources下也建立空的plugins目錄。

問題六:Unsupported transport.type

 

解決方式:將發行版mudules目錄下內容拷貝過來。

問題七:空指針異常:

 

跟蹤源碼,發現如下原因:ES中對於modules中對於jar包名稱包含elasticsearch-rest-client.jar包的,在編譯的時候,因為本地編譯默認是snapshot的,所以會追加snapshot,這樣的化版本號變為了6.0.0-snapshot,而modules中是從發行版拷貝過來的,結合代碼上追加的codebase,變為了codebase.elasticsearch-rest-client-6.0.0.jar,這樣index版本號就出錯了。

 

解決方式:修改org.elasticsearch.Build 74行,

// isSnapshot = true; by angie_hawk7

isSnapshot = false;

 

也可以設置jvm環境變量:build.snapshot

再次啟動OK

 

 

10:測試

 


免責聲明!

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



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