我是靠谱客的博主 羞涩鲜花,这篇文章主要介绍ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建1.准备 2.源码编译及导入Idea3.Bug&Execption参考,现在分享给大家,希望可以做个参考。

想读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源码小问题:

复制代码
1
2
3
4
5
6
7
-Des.path.home=D:BDLToolsElasticelasticsearchelasticsearch-5.6.16 -Des.path.conf=D:BDLToolsElasticelasticsearchelasticsearch-5.6.16config -Dlog4j2.disable.jmx=true -Djava.security.policy=D:BDLToolsElasticelasticsearchelasticsearch-5.6.16configjava.policy -Des.path.home=指向zip文件解压后的地址,不必要在源码中新建home文件夹

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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

单步调试,发现问题:elasticsearchcoresrcmainjavaorgelasticsearchbootstrapSecurity.java,修改如下

复制代码
1
2
//final String esVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? "-SNAPSHOT" : ""); final String esVersion = Version.CURRENT.toString();

同时修改elasticsearchcoresrcmainjavaorgelasticsearchVersion.java,应该是v_5_6_17未发布,需要修正一下,如下所示:

复制代码
1
2
//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源码分析(一)编译启动

最后

以上就是羞涩鲜花最近收集整理的关于ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建1.准备 2.源码编译及导入Idea3.Bug&Execption参考的全部内容,更多相关ElasticSearch源码(一)ElasticSearch5内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部