ElasticSearch 调试与启动
Elasticsearch是一个搜索的服务框架,大部分的情况下可以利用resetful的特性,进行直接url操作通信,但是可能有时候需要修改其中的某个模块,或者希望是一个你所希望的框架,来完成个性化的定制,或者,更想清除整个的流程,这个时候就需要对源码进行加载调试了,搜了网上的很多资料,发现相关的很少,所以在此将如何调试加载到eclipse中进行简单的介绍。
(1)下载elasticsearch源码,本人所使用的是elasticsearch2.4.0,下载地址为https://github.com/elastic/elasticsearch/releases
(2)解压到下载的文件夹,使用eclipse导入file->import->maven->existing maven project,将elasticsearch下面的core目录导入,如下所示:
(3)可能会出现导入错误,如下所示,这个时候可以直接finish直接结束忽略掉
(4)这个时候会出现pom.xml错误,例如Plugin execution not covered by lifecycle configuration: 这种,如下图所示,解决办法如下图2所示,直接点ignore,直接点ok,之后会出现overriding以及id冲突之类的,直接remove,顺序如下图所示
(5)直接点工程,右键 maven->update project,将force勾上,这个步骤是maven中央库进行更新jar包,可能有时候会缺少一些jar包,到时候可以多做几次update操作,用来多次下载提高成功率,可能尝试很多次之后还有些jar包没下下来,1,可以选择将jar包上一层目录删除,重新更新;2,或者将jar包删除,直接从网上下载jar包,这一步很关键,我这边是试过多次之后下载好了,无法重现第一次的情形,望各位见谅;更新之后就无错误了,如下第二张图所示
(6)main/java找到org.elasticsearch.bootstrap的elasticsearch.java 到main函数 run as java application之后,出现如下图所示:出现错误 Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
(7)在main函数右键,run as run configuration,在arguments按照如下填写,path.home=<你的core文件的路径>,点run 配置文件如下:
提示很明显,在Program arguments中添加start即可。
-Xms1g -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/heapdump.hprof -ea -Delasticsearch -Des.foreground=yes -Des.path.home=D:\coding\opensource\elasticsearch\core -Des.security.manager.enabled=false -Des.http.cors.enabled=true -Des.http.cors.allow-origin=*
(8)之后会出现log路径未找到,config错误等,我这边刚开始出现的是config的logging未找到类似的错误,如下所示: OK,搞定,但是配置都还是默认的,而且日志也还打不出来,所以还得将配置文件增加一下,配置文件的位置在home.path下的config文件夹中包含elasticsearch.yml和logging.yml,将ES官网下载的这两文件拷过去,并修改相应配置即可。
(9)从elastic的官网 https://www.elastic.co/downloads/past-releases,(下载2.1.0 现在最新是2.1.1但是为了防止配置文件有变动,还是一直保持同一个版本比较好点)已经封装好的elasticsearch,解压,将里面的config文件拷贝到你所调试的工程的core下面,即可,再次run as java application就可以了