我是靠谱客的博主 羞涩鲜花,最近开发中收集的这篇文章主要介绍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源码小问题:

-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,发现如下问题

[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,修改如下

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

同时修改elasticsearchcoresrcmainjavaorgelasticsearchVersion.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源码分析(一)编译启动

最后

以上就是羞涩鲜花为你收集整理的ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建1.准备 2.源码编译及导入Idea3.Bug&Execption参考的全部内容,希望文章能够帮你解决ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建1.准备 2.源码编译及导入Idea3.Bug&Execption参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部