前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我花了三天时间启动ES源码这件事

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

作者头像
疯狂的KK
发布2022-04-12 14:54:51
8220
发布2022-04-12 14:54:51
举报
文章被收录于专栏:Java项目实战

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

难读的ElasticSearch源码

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

环境准备

代码语言:javascript
复制
Elasticsearch version (bin/elasticsearch --version): \elasticsearch-8.1.0
JVM version (java -version): openjdk version jdk-17.0.2
Windows environment : Windows 11
idea:2021.3

启动elasticsearch

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

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

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

代码语言:javascript
复制
启动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);
        }
    }

报错如下

代码语言:javascript
复制
ERROR: the system property [es.path.conf] must be set

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 赵KK日常技术记录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档