背景
旨在通过IDEA去跟踪Elasticsearch的每一步,方便更好的理解源代码,本文基于Elasticsearch的v2.3.4分支。
前提
首先来简单看一下Elasticsearch服务的启动脚本,只保留我们需求的:
#!/bin/sh
daemonized=`echo $* | egrep -- '(^-d |-d$| -d |--daemonize$|--daemonize )'`
if [ -z "$daemonized" ] ; then
exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch start "$@"
else
exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch start "$@" <&- &
retval=$?
pid=$!
[ $retval -eq 0 ] || exit $retval
if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
sleep $ES_STARTUP_SLEEP_TIME
fi
if ! ps -p $pid > /dev/null ; then
exit 1
fi
exit 0
fi
exit $?
里面有我们需要关注的变量"es.path.home":这个变量指定ES源码的路径,然后我们还看到启动类是"org.elasticsearch.bootstrap.Elasticsearch",参数是"start",了解完这些后,我们就可以配置一个项目来启动Elasticsearch了
配置
1.首先来看一下Elasticsearch的源码目录,core目录包含了Elasticsearch的源代码:
2.接着配置一个启动项目并启动即可即可:
3.在core文件下新建config文件夹,然后将Elasticsearch的两个配置文件放进去即可:elasticsearch.yml、logging.yml,这么放的缘故是Elasticsearch是这么去找到我们需要的两个配置文件的:
4.配置好了启动看效果:
总结
通过debug能更好帮助我们理解Elasticsearch的源码,后续会有部分Elasticsearch源码的分析。