我的ElasticSearch探索之路 源码启动篇

527 阅读1分钟

公司的酒店业务中是用es做搜索, 决定对es做个挖地三尺的探索

从源码开始 。

刚开始用最新版本7.x编译提示要Java11支持。 算了我们业务在未来五年内不太可能会脱离Java8 。那么就找个Java8的版本分支吧 。根据

根据这本数看了下来。 源码启动也是成功了 其中重点的地方可能是

一、编译

gradlew assemble 这是生成字节码  这个没问题你可以根据打出“zip”包启动。 看到命令行启动日志可能略有成就感。

graldew idea生成idea项目。没有这个的话你不能用ide调试,导入idea后project侧边栏目录也是乱七八糟,语法没有高亮 ,代码没有追踪,啥几把玩样儿不玩了。。。哈哈我曾经就是这样的心态。

二、main方法启动

(一)参数配置

需要配置jvm参数

-Des.path.home=G:\git-Source\Repos\elasticsearch\home
-Des.path.conf=G:\git-Source\Repos\elasticsearch\home\config
-Xms1g
-Xmx1g
-Dlog4j2.disable.jmx=true
-Djava.security.policy=G:\git-   Source\Repos\elasticsearch\home\config\elasticsearch.policy

es.path目录给我的感觉是指定“运行时空间”  其中有配置文件,es所必须的module插件,比如用netty做通信, 比如plainess脚本。 没有这个的话

home和conf都需要配置。

最后一行的鉴权

一个分号都不能差。

(二)、源码走向。

ElasticSearch.java这是启动类。 

class Elasticsearch extends EnvironmentAwareCommand {

这个类是Command的子类, 这说明在命令行“bin/elasticsearch -p ..."  也是走这里。

跟进main方法,我首先看到了if (addShutdownHook()) {

这是进程被杀市时调的钩子,小细节并非主线, 有空再看 ,推出就是监听一个端口, 然后回收些资源。

从90行开始, 代码就开始复杂了 。 困了先睡了。 明天更新

-----------------------------------------------------------------------------------------------