如何在IDE中运行elasticsearch

现在插播一篇,之前还一直没有源码跑过Elasticsearch,如果想调试Elasticsearch,或是对它做一些修改,那么就需要在IDE中将之在本地跑起来,不像直接下载的包,对于源码的运行还需要一些额外的注意。

本人是不习惯用Eclipse的,一直使用的是Intelli IDEA,对于使用Eclipse的同学,大家是可以类比的。那我们就直接从源码的main函数开始来运行,main的位置其实我已经在elasticsearch源码分析之启动过程一文中说过了。

第一次运行:

Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
at org.elasticsearch.env.Environment.<init>(Environment.java:99)
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:82)
at org.elasticsearch.common.cli.CliTool.<init>(CliTool.java:107)
at org.elasticsearch.common.cli.CliTool.<init>(CliTool.java:100)
at org.elasticsearch.bootstrap.BootstrapCLIParser.<init>(BootstrapCLIParser.java:48)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:227)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

可以看到是path.home没有配置,其实不只是path.home没有配置了,还有一些其他的关于JVM的配置也需要,在IDE的VM option中一并增加如下配置:

-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=*

第二次运行:

ERROR: command not specified

NAME

    elasticsearch - Manages elasticsearch

SYNOPSIS

    elasticsearch <command>

DESCRIPTION

    Start an elasticsearch node

COMMANDS

    start      Start elasticsearch

    version    Show version information and exit

NOTES

    [*] For usage help on specific commands please type "elasticsearch <command> -h"

提示很明显,在Program arguments中添加start即可。

第三次运行:

log4j:WARN No appenders could be found for logger (bootstrap).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

没有报错了,只有log4j没有配置的warn了。 打开浏览器看一下吧:

OK,搞定,但是配置都还是默认的,而且日志也还打不出来,所以还得将配置文件增加一下,配置文件的位置在home.path下的config文件夹中包含elasticsearch.yml和logging.yml,将ES官网下载的这两文件拷过去,并修改相应配置即可。

第四次运行:

[2015-12-06 23:22:07,567][WARN ][bootstrap                ] unable to install syscall filter: syscall filtering not supported for OS: 'Windows 7'
[2015-12-06 23:22:07,883][INFO ][node                     ] [idea] version[2.1.0-SNAPSHOT], pid[28296], build[${build/NA]
[2015-12-06 23:22:07,883][INFO ][node                     ] [idea] initializing ...
[2015-12-06 23:22:07,886][INFO ][plugins                  ] [idea] loaded [], sites []
[2015-12-06 23:22:07,904][INFO ][env                      ] [idea] using [1] data paths, mounts [[(D:)]], net usable_space [6.1gb], net total_space [19.9gb], spins? [unknown], types [NTFS]
[2015-12-06 23:22:09,150][INFO ][node                     ] [idea] initialized
[2015-12-06 23:22:09,150][INFO ][node                     ] [idea] starting ...
[2015-12-06 23:22:09,339][INFO ][transport                ] [idea] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}, {[::1]:9300}
[2015-12-06 23:22:09,349][INFO ][discovery                ] [idea] jasper/2qSAldpEQ8eFEj5aWfKXoQ
[2015-12-06 23:22:13,385][INFO ][cluster.service          ] [idea] new_master {idea}{2qSAldpEQ8eFEj5aWfKXoQ}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2015-12-06 23:22:13,417][INFO ][gateway                  ] [idea] recovered [0] indices into cluster_state
[2015-12-06 23:22:13,465][INFO ][http                     ] [idea] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}
[2015-12-06 23:22:13,466][INFO ][node                     ] [idea] started

终于日志也打印正常了,那我们再来浏览器访问一下:

可以看到,node name和cluster name也都和我配置的一致了,看一下status:

也是一切正常,那再来插入一笔数据试试:

PUT http://127.0.0.1:9200/test/test/1
{
    "name": "jasper",
    “age”: 24
}

再来查询一把试试:

看来也是一切正常!!!

既然如此,那么后面如果要调试或是修改(额,这个感觉很有难度的呀),就会方便很多了。


转载请注明出处:http://www.opscoder.info/es_ide_run.html

猜你喜欢

转载自blog.csdn.net/psiitoy/article/details/73500770