首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用IDEA调试ES(Elasticsearch)源码教程

使用IDEA调试ES(Elasticsearch)源码教程

原创
作者头像
morningchen
修改2018-12-29 15:50:48
5.8K0
修改2018-12-29 15:50:48
举报
文章被收录于专栏:morningchenmorningchen

使用IDEA调试Elasticsearch源码

本文以Elasticsearch v6.4.3 为例,介绍使用IDEA调试Elasticsearch源码的方法。

使用到的工具如下:

组件

版本

JDK

10.0.1

Gradle

4.9

Elasticsearch

6.4.3

IDEA

2018.3.2 x64

1. 下载ES源码,切换到想要编译的branch

# 将ES代码下载至本地
git clone https://github.com/elastic/elasticsearch.git
# 进入代码目录 
cd elasticsearch
# 创建一个新的本地分支,方便同时管理多个版本的代码。若无此需求,可以跳过此步骤
git checkout -b debug_6.4.3
# 切换至指定版本
git checkout v6.4.3

2. 下载一个同版本号的 Elasticsearch发行版

下载地址:https://www.elastic.co/downloads/elasticsearch。 下载后解压到某个目录。

3. 下载JAVA/gradle

  • 安装JAVA:jdk10

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

安装完毕后,新建环境变量JAVA_HOME,值为jdk所在的文件夹

image
image

安装包解压后,将gradle的bin文件夹加入Path

image
image

4. 使用 gradle 编译ES源码

  • 进入elasticsearch代码目录,执行 gradle idea,等待编译完成
image
image
  • 进入elasticsearch\server代码目录,执行 gradle idea,等待编译完成
image
image

5. 将工程导入IDEA

  • 启动IDEA,点击 Import Project,而后选择Elasticsearch代码目录
image
image
  • 选择从Gradle导入项目
image
image
  • 选择Gradle目录和JVM目录
image
image
  • 等待build完成,IDEA下面的控制台显示 sync finished
image
image

6. 构建APP

  • 在 elasticsearch/server/src/main/org/elasticsearch/bootstrap 下找到Elasticsearch的启动类 Elasticsearch.java,这是Elasticsearch的启动入口。打开文件,右键 Run Elasticsearch.main(),IDEA会自动为我们创建一个Application。
image
image

此时会报错:

image
image
  • 这是需要配置 es.path.conf 参数,需要在 https://www.elastic.co/downloads/elasticsearch 下载一个同版本号的 Elasticsearch发行版,解压到某个目录。
  • 进入解压后的 elasticsearch/config目录,新建 java.policy 文件, 内容如下:
grant {
    permission java.lang.RuntimePermission "createClassLoader";
};
  • 而后修改Application的配置
image
image
image
image
  • VM options中指定如下参数,目录是上面下载的Elasticsearch发行版解压到的目录,本例中是D:\elasticsearch_release\elasticsearch-6.4.3

注意勾选 Include dependencies 那个选项

-Des.path.home=D:\elasticsearch_release\elasticsearch-6.4.3 -Des.path.conf=D:\elasticsearch_release\elasticsearch-6.4.3\config -Djava.security.policy=D:\elasticsearch_release\elasticsearch-6.4.3\config\java.policy -Dlog4j2.disable.jmx=true
  • 在main函数入口加入断点

位置:D:\elasticsearch_code\elasticsearch_6.4.3\elasticsearch\server\src\main\java\org\elasticsearch\bootstrap\Elasticsearch.java 文件中的main(java.lang.String[])

image
image
  • 启动debug
image
image
  • 运行成功,程序暂停在断点处:
image
image

快捷键:

快捷键

介绍

Ctrl+Q

To quickly see the documentation for a class or method at caret

Ctrl+B

To navigate to the declaration of a class, method or variable

Ctrl+F12

You can quickly navigate in the currently edited file

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用IDEA调试Elasticsearch源码
    • 1. 下载ES源码,切换到想要编译的branch
      • 2. 下载一个同版本号的 Elasticsearch发行版
        • 3. 下载JAVA/gradle
          • 4. 使用 gradle 编译ES源码
            • 5. 将工程导入IDEA
              • 6. 构建APP
              相关产品与服务
              Elasticsearch Service
              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档