我花了三天时间启动ES源码这件事

举报
赵KK日常技术记录 发表于 2023/06/30 23:50:53 2023/06/30
【摘要】  起因是当我尝试调用完ES的Java api后,想尝试进行ES源码的启动调试,想看到哪里结合netty的使用,以及如何进行调试,当我翻遍文章解决我的问题,却发现并不起作用(为啥我在打这段话的时候一种中式英语的风格油然而生)。难读的ElasticSearch源码并不是代码的难读性,而是我为了准备阅读的环境,陆陆续续准备了3天,当下我的idea仍然在下载gradle的必要组件,其实提起兴趣的还是...

 起因是当我尝试调用完ES的Java api后,想尝试进行ES源码的启动调试,想看到哪里结合netty的使用,以及如何进行调试,当我翻遍文章解决我的问题,却发现并不起作用(为啥我在打这段话的时候一种中式英语的风格油然而生图片)。


难读的ElasticSearch源码

并不是代码的难读性,而是我为了准备阅读的环境,陆陆续续准备了3天,当下我的idea仍然在下载gradle的必要组件,其实提起兴趣的还是因为它引用了netty。


环境准备

Elasticsearch version (bin/elasticsearch --version): \elasticsearch-8.1.0JVM version (java -version): openjdk version jdk-17.0.2Windows environment : Windows 11idea:2021.3


启动elasticsearch

解压Elasticsearch-8.1.0到本地后启动elasticsearch.bat成功

下载源码到本地,由于是gradle编译,通过更改国内镜像的前提下,我5G的WIFI网速,12代i7的环境仍然下载了10分钟。

为了解决低版本在jdk13.14中的bug我在本地安装了jdk17,其他特别的设置,在项目的根路径下添加了init.gradle,其他无任何更改。

启动org.elasticsearch.bootstrap.Elasticsearch/**     * Main entry point for starting elasticsearch     */    public static void main(final String[] args) throws Exception {        overrideDnsCachePolicyProperties();        org.elasticsearch.bootstrap.Security.prepopulateSecurityCaller();
        /*         * We want the JVM to think there is a security manager installed so that if internal policy decisions that would be based on the         * presence of a security manager or lack thereof act as if there is a security manager present (e.g., DNS cache policy). This         * forces such policies to take effect immediately.         */        org.elasticsearch.bootstrap.Security.setSecurityManager(new SecurityManager() {
            @Override            public void checkPermission(Permission perm) {                // grant all permissions so that we can later set the security manager to the one that we want            }
        });        LogConfigurator.registerErrorListener();        final Elasticsearch elasticsearch = new Elasticsearch();        int status = main(args, elasticsearch, Terminal.DEFAULT);        if (status != ExitCodes.OK) {            printLogsSuggestion();            exit(status);        }    }

报错如下

ERROR: the system property [es.path.conf] must be set

到这里其实已经可以进行初步的debug,但是想知道问题怎么解决,在搜遍全网发现大多是抄自github的解决方案时,我自己也提了个issue到elasticsearch

图片

后续会在博客或者公众号中更新elasticsearch笔记。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。