1、準(zhǔn)備
- idea
- elasticsearch源碼包,可以直接從github上下載。本文使用v7.8.0
- gradle,需要v6.5+
- jdk,需要jdk12+
- 已經(jīng)部署了es服務(wù)去服務(wù)器
2、編譯
- 安裝gradle,修改gradle源為國(guó)內(nèi)的ali源(省略)
- 配置idea的gradle為我們安裝的gradle。
- 編譯。需要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

(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

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

(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)成功了。

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ì)遇到的坑基本都寫上去了。