ElasticsSearch 源碼編譯&啟動(dòng)

1、準(zhǔn)備

  • idea
  • elasticsearch源碼包,可以直接從github上下載。本文使用v7.8.0
  • gradle,需要v6.5+
  • jdk,需要jdk12+
  • 已經(jīng)部署了es服務(wù)去服務(wù)器

2、編譯

  1. 安裝gradle,修改gradle源為國(guó)內(nèi)的ali源(省略)
  2. 配置idea的gradle為我們安裝的gradle。
  3. 編譯。需要20+min,如果運(yùn)氣好,這步完以后你就能看到編譯好以后的代碼了。

3、啟動(dòng)

(1)

找到org.elasticsearch.bootstrap.Elasticsearch類,在啟動(dòng)參數(shù)中加入

-Des.path.home=D:\elasticsearch\home
-Des.path.conf=D:\elasticsearch\home\config
-Dlog4j2.disable.jmx=true
image.png
(2)

問題:

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")

解決:
在java_home中的conf\security\java.policy中添加一行代碼:permission java.lang.RuntimePermission "createClassLoader";

(3)

問題:

java.lang.ClassNotFoundException: org.elasticsearch.plugins.ExtendedPluginsClassLoader

解決:
1、找到server的build.gradle


image.png

2、刪掉testRuntimeOnly那行,并且把compileOnly改成compile


image.png
(4)配置

1、到D:\elasticsearch\home\config下(就是上面啟動(dòng)參數(shù)配置的es.path.conf),添加elasticsearch.yml以及log4j2.properties文件,不添加啟動(dòng)會(huì)失敗。具體內(nèi)容可以去服務(wù)器上扣一份下來。
2、去服務(wù)器上弄一份module下來,如果用rpm安裝默認(rèn)是在/usr/share/elasticsearch/module,然后解壓到D:\elasticsearch\home(就是上面啟動(dòng)參數(shù)配置的es.path.home)中。
3、

org.elasticsearch.ElasticsearchException: Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false]

在elasticsearch.yml中添加xpack.ml.enabled: false

(5)啟動(dòng)

使用org.elasticsearch.bootstrap.Elasticsearch應(yīng)該就可以啟動(dòng)成功了。

image.png

4、reference

1.http://www.itdecent.cn/p/fbb28ffecc5a
2.https://segmentfault.com/a/1190000022217206/
3.https://blog.csdn.net/fh_luchenxi/article/details/106516818

5、后記

1、配置gradle需要小心配置好,記得使用國(guó)內(nèi)的源。
2、啟動(dòng)會(huì)遇到的坑基本都寫上去了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容