Elasticsearch6.1.2 源码下载和编译构建
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
为了深入学习 elasticsearch,研究其源码是种有效途径,本文简述了从下载到编译构建再运行起来的全部过程;
环境信息
操作系统:Ubuntu 18.04.2 LTS
JDK:1.8.0_191
Gradle:4.6
elasticsearch:6.1.2
请确保 JDK 和 Gradle 已安装在 Ubuntu 电脑上,并且环境变量设置成功;
账号问题
由于 elasticsearch 要求以非 root 身份启动,因此本次实战用的不是 root 账号,以下命令可用来创建 admin 账号:
下载源码
上述网站中有各个版本的 release,找到我们需要 的 6.1.2 版本,然后下载压缩包,如下图:
将源码下载到 Ubuntu 电脑上,执行 tar -zxf elasticsearch-6.1.2.tar.gz 解压后,得到新的文件夹 elasticsearch-6.1.2;
修改源码
为了证明修改的源码可以正常构建和运行,我们来修改一个 java 文件,在里面打印一些日志;
进入前面解压得到的文件夹 elasticsearch-6.1.2 ;
打开文件 core/src/main/java/org/elasticsearch/node/Node.java ,增加一个静态方法,作用是打印当前线程堆栈情况,内容如下:
找到 Node.java 的如下方法:
在 logger.info("initializing ..."); 这一行代码下面增加下面这一行内容,作用是在 elasticsearch 启动时打印 Node 类实例的调用堆栈:
保存好再退出,接下来可以编译了;
编译构建
进入文件夹 elasticsearch-6.1.2 ,执行命令**./gradlew assemble**即可开始编译,下载依赖会消耗大量时间,因此请耐心等待,编译过程中 CPU 占用略高,如下图:
大约 10 多分钟后,编译构建成功,控制台如下所示:
编译完成后,进入目录 elasticsearch-6.1.2/distribution/tar/build/distributions 可以见到构建成功的结果:elasticsearch-6.1.2-SNAPSHOT.tar.gz,这就是可用的 elasticsearch-6.1.2;
构建结果文件以 SNAPSHOT 作为文件名后缀,如果不想要此后缀,在编译的时候改用以下命令即可:
验证构建的 elasticsearch 是否可用
解压 elasticsearch-6.1.2-SNAPSHOT.tar.gz 到一个目录下;
进入目录 elasticsearch-6.1.2-SNAPSHOT/config ,修改 network.host 的配置为 0.0.0.0,如下图:
进入目录 elasticsearch-6.1.2-SNAPSHOT/bin ,执行 ./elasticsearch 命令启动服务;
在控制台可以看到新增的代码打出的日志,将 Node 类的调用堆栈打印出来了,我们也借此机会了解到 elasticsearch 启动时的涉及到的关键类:
我的 ubutnu 电脑的 IP 地址是 192.168.50.75,因此用浏览器访问此地址:http://192.168.50.75:9200 ,返回内容如下所示:
至此编译构建 elasticsearch6.1.2 成功,在您编译构建 elasticsearch 的时候,希望本文能给您提供参考;
建议
除了修改和编译源码,通过 IntelliJ IDEA 远程调试 elasticsearch 也是有效的学习手段,推荐您参考文章《IntelliJ IDEA远程调试Elasticsearch6.1.2》。
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/391fb7710f9873013e7446705】。文章转载请联系作者。
评论