elasticsearch 启动过程源码(一)
平时使用es比较多,计划看下es的源码,对es有个更清晰的认识,先从es的启动过程入手,看看es都干了什么,启动涉及到的类的初始化或者类静态属性的初始化设置的具体功能先不做深究,相信随着es源码的阅读进展会一一解释清楚。
主要涉及Bootstrap和initialSettings
注
es 版本1.0
官方给出使用/bin/elasticsearch来启动es,我们先来看/bin/elasticsearch这个文件
/bin/elasticsearch
if [ "x$daemonized" = "x" ]; then
es_parms="$es_parms -Des.foreground=yes"
exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS $es_parms -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" $props \
org.elasticsearch.bootstrap.Elasticsearch
# exec without running it in the background, makes it replace this shell, we'll never get here...
# no need to return something
else
# Startup Elasticsearch, background it, and write the pid.
exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS $es_parms -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" $props \
org.elasticsearch.bootstrap.Elasticsearch <&- &
return $?
fi
以上部分关键代码显示 java执行的入口是org.elasticsearch.bootstrap.Elasticsearch
org.elasticsearch.bootstrap.Elasticsearch.java
public class Elasticsearch extends Bootstrap {
public static void close(String[] args) {
Bootstrap.close(args);
}
public static void main(String[] args) {
Bootstrap.main(args);
}
}
实际上是执行了Boots