公司的酒店业务中是用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行开始, 代码就开始复杂了 。 困了先睡了。 明天更新
-----------------------------------------------------------------------------------------------