一、准备工作
-
从git拉取源码
git clone https://github.com/elastic/elasticsearch.git
-
安装对应版本的 gradle 和 jdk,由于选择编译的Elasticsearch版本为7.7,对应的gradle版本为6.4,jdk为1.14
-
下载一份对应版本的Elasticsearch的windows发行版备用 https://www.elastic.co/cn/downloads/elasticsearch
二、编译流程
-
修改elasticsearch\gradle\wrapper\gradle-wrapper.properties文件(可选)
distributionUrl=gradle-6.4-all.zip
然后将下载的gradle-6.4-all.zip放在同级目录下,这样就不会再自动从gradle官网去下载了
-
配置gradle的阿里云镜像(可选)
-
导入到idea,等待gradle初始化
-
启动
org.elasticsearch.bootstrap.Elasticsearch
类
三、错误处理
-
the system property [es.path.conf] must be set
run -> EditConfigurations -> VM Options
-Des.path.home=C:\work\source\elasticsearch\home -Des.path.conf=C:\work\source\elasticsearch\home\config -Dlog4j2.disable.jmx=true -Djava.security.policy=C:\work\source\elasticsearch\home\config\elasticsearch.policy -Des.path.plugins=C:\work\source\elasticsearch\home\plugins
其中的home是自定义的配置文件夹,我将其放入到es源码根目录中。需要将es对应发行版中的config、modules、plugins目录拷贝到home目录中。同时,还需要在config目录中增加一个配置文件elasticsearch.policy,其中的内容如下:
grant { permission javax.management.MBeanTruxtPermission "register"; permission javax.management.MBeanServerPermission "createMBeanServer"; permission java.lang.RuntimePermission "createClassLoader"; };
-
java.lang.NullPointerException
在home/config/elasticsearch.yml中添加
node.name: node-1
-
java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader
点击Edit Configurations,给Include dependencies with Provided scope打上勾即可解决