一、环境准备
1.Elasticsearch7.5 源码,github 下载或者网盘下载 提取码: faw8
2.gradle5.6.2+ 版本,gradle 官网下载
3.jdk12+,openjdk 下载,选择 jdk12
4.Intellij Idea版本: 2020.1
5.系统:MacOS 10.14.6
二、编译构建
配置好 java 和 gradle 环境之后就可以开始编译编码了
1.进行 elasticsearch 源码跟路径,用 git 切换到 7.5 分支,项目结构如下图所示

2.将其配置成为 idea 项目,执行如下命令
./gradlew idea
配置成功后,会提示你 successful
3.用 idea 打开 elasticsearch 源码,如下图所示,点击右边的按钮进行编译

4.如果编译或者配置的过程中出错,很有可能是由于网络原因导致,可使用代理或者配置阿里云仓库进行解决
打开 buildSrc 模块下的 build.gradle,将里面的 jcenter 替换为阿里云仓库,如果还是失败,可尝试多试几次解决
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
三、源码启动
1.构建 elasticsearch 执行包文件,使用如下命令
./gradlew assemble
生成后的包位于 distribution
模块下的子模块的 archives
下,如图所示

选择你对应系统的包,mac 系统对应的包位于 darwin-tar
下的 build/distributions
目录下
2.在 elasticsech 源代码创建一个目录,这里就叫 product,将刚才打包生成的 elasticsearch-7.5.3-SNAPSHOT-darwin-x86_64.tar.gz 解压到 product 目录下
3.配置源码环境
找到 org.elasticsearch.bootstrap.Elasticsearch
这个类,配置 jvm options
如下图所示

-Des.path.home=/Users/xx/project/elastic/elasticsearch/product 你刚才配置 es 的路径
-Des.path.conf=/Users/xx/project/elastic/elasticsearch/product/config 你刚才配置 es 的路径的配置文件路径
-Dlog4j2.disable.jmx=true
修改 server
模块下的 build.gradle
文件,将 compileOnly project(':libs:elasticsearch-plugin-classloader')
替换为 compile project(':libs:elasticsearch-plugin-classloader')
4.启动源码,点击 debbug
,就可以启动了

浏览器上输入 localhost:9200 得到如下结果说明成功了
{
"name" : "elastic-node",
"cluster_name" : "elastic-cluster",
"cluster_uuid" : "0n5spb4wQXKkFqEgYufzgw",
"version" : {
"number" : "7.5.3",
"build_flavor" : "unknown",
"build_type" : "unknown",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
四、远程 debug 调试
除了本地源码启动外,elasticsearch 也可以支持远程 debug
1.在源代码根路径下执行如下命令
./gradlew run --debug-jvm
2.idea 开启 remote debug
模式

这里的 Debugger model
要选择 Listen to remote JVM
并且要勾选 Auto restart
注意 这里 idea 启动需要早于第 1 步那个命令的,点击 debug,就可以愉快的 debug 源码了

而日志都是在命令行打印

网友评论