ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建

想读ElasticSearch源码,从git上拉取代码,导入idea。就是这么简单的一个想法,记录一下过程。

1.准备 

1.1哪个版本?

ElasticSearch版本更新真的是很快,每个版本都有大量的新特性,想读源码之前总得闹清楚,想读哪个版本的吧?

本文用5.6.16  为什么是这个版本?

(1)5.x版本,这个版本应该是最新的,公司的ES集群还在5.x,没有进行大的升级

(2)其他版本,导入过程bug满天飞,主要是国内网络,很多包不能下载

1.2环境准备

(1)idea版本:2018.2.5

(2)elasticsearch  git地址:https://github.com/elastic/elasticsearch  5.6.16版本的ElasticSearch需要从tag中拉取,如下图示

(3)jdk 版本:版本选择,看这里https://www.elastic.co/guide/en/elasticsearch/reference/5.6/_installation.html

(4)gradle版本:选定分支后,在github上查找“elasticsearch/gradle/wrapper/gradle-wrapper.properties”目录,确定gradle版本

(5)elasticsearch的压缩包,https://www.elastic.co/cn/downloads/past-releases/# 选择对应和源码版本一致的zip文件,如果官网下载太慢,有个国内的镜像网站:https://thans.cn/mirror/elasticsearch.html

1.3注意事项

(1)elasticsearch版本发生变化时,jdk和gradle版本也会发生变化

(2)gradle注意使用国内阿里镜像(网上很多配置)

(3)gradle和idea配置的时候,记得使用自定义的gradle,同时offline work不选,如下图示:

2.源码编译及导入Idea

这个过程,参考教你编译调试Elasticsearch 6.3.2源码即可。

3.Bug&Execption

(1)修正一下教你编译调试Elasticsearch 6.3.2源码小问题:

-Des.path.home=D:\BDLTools\Elastic\elasticsearch\elasticsearch-5.6.16
-Des.path.conf=D:\BDLTools\Elastic\elasticsearch\elasticsearch-5.6.16\config
-Dlog4j2.disable.jmx=true
-Djava.security.policy=D:\BDLTools\Elastic\elasticsearch\elasticsearch-5.6.16\config\java.policy


-Des.path.home=指向zip文件解压后的地址,不必要在源码中新建home文件夹

(2)按照上述流程,走完,启动ES,发现如下问题

[2020-01-09T18:46:05,714][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[main/:?]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[main/:?]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) ~[main/:?]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[main/:?]
	at org.elasticsearch.cli.Command.main(Command.java:90) ~[main/:?]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[main/:?]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[main/:?]
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1967) ~[?:1.8.0_231]
	at org.elasticsearch.bootstrap.Security.readPolicy(Security.java:220) ~[main/:?]
	at org.elasticsearch.bootstrap.Security.getPluginPermissions(Security.java:177) ~[main/:?]
	at org.elasticsearch.bootstrap.Security.configure(Security.java:119) ~[main/:?]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:228) ~[main/:?]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[main/:?]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[main/:?]
	... 6 more

单步调试,发现问题:elasticsearch\core\src\main\java\org\elasticsearch\bootstrap\Security.java,修改如下

//final String esVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? "-SNAPSHOT" : "");
final String esVersion = Version.CURRENT.toString();

同时修改elasticsearch\core\src\main\java\org\elasticsearch\Version.java,应该是v_5_6_17未发布,需要修正一下,如下所示:

//public static final Version CURRENT = V_5_6_17_UNRELEASED;
public static final Version CURRENT = V_5_6_16;

(3)启动ElasticSearch,正常

打开,http://localhost:9200/,如下所示,之后可以阅读代码了

参考

教你编译调试Elasticsearch 6.3.2源码

Intellij Idea编译Elasticsearch源码

Eleaticsearch源码分析(一)编译启动

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值