searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

用idea本地调试Elasticsearch

2023-11-02 02:10:43
93
0

1.准备工作

      1.1 源码包下载

      这个不多说了,直接去github clone吧。

 

      1.2 编译工具-Gradle

      ElasticSearch每个版本对于gradle版本的要求都可能会变化,所以我们直接去源码包中查看当前需要的gradle版本,然后去官网下载。

      源码包中,找到文件名gradle-wrapper.properties的配置文件,并找到下面这个配置,更换为自己下载的gradle包

 

      1.3 java环境

      直接去官网对着elasticsearch的版本查,本文用OracleJdk-17

 

2. 环境变量配置

      以linux系统为例

      配置完之后执行 source bash_profile 立即生效

 

查看配置 gradle -v

 

3. 提速工作

      3.1 Gradle换源

      编译ElasticSearch需要下载很多依赖包,而其中有很多包的站源是国外的,下载时比较慢。 因此需要给Gradle换成国内镜像源,提升依赖包下载速度。 在 GRADLE_HOME 目录中的 init.d 下,创建文件 init.gradle ,并贴上如下内容:

 

      3.2 ElasticSearch源码包换Gradle分发地址

打开你下载下来的 ElasticSearch 源码包,进入目录 gradle/wrapper。然后,重新将 GRADLE_HOME 打包成 gradle-8.1.1-all.zip,拷贝到该目录下。

随后,打开文件 gradle-wrapper.properties,如下:

上述文件原计划的 distributionUrl 默认为官网下载地址。
意思是在编译源码初期,程序会去搜寻指定好的 gradle-8.1.1-all.zip 压缩文件,然后解压下载。
但官网有时下载特别慢,会导致编译第一步就卡壳了。

本文初已提供了 gradle-6.5-all.zip 的快速下载方式,便于使用。
所以这里并不需要再次进行下载,

因此在文件中指定 distributionUrl = gradle-8.1.1-all.zip,就在本地文件目录即可。
这样可以快速跳过编译前期漫长的下载 gradle-8.1.1-all.zip 的等待时间。

 

4. 编译ElasticSearch源码

      4.1 用 IntelliJ Idea 打开 ElasticSearch 源码根目录中的 build.gradle 文件,如下图:

      4.2 如下图中进行gradle配置,配置完成后,点 "OK" 。

 

      4.3 如下图中操作,进行源码编译

 

      4.4 正在编译中,慢慢等吧

 

 

5. 启动ElasticSearch 源码

      5.1 本地启动

      创建一个Java-Application 启动配置,并填写相关配置,红框部分特别注意

 

      VM options配置如下:

      

#指定上文中你所下载的 ElasticSearch 客户端安装路径
-Des.path.home=xxxxxx
#指定客户端安装路径中的配置路径
-Des.path.conf=xxxxxxx
-Dlog4j2.disable.jmx=true
-Xmx4g
-Xms4g

 

默认安装的 Jdk-17 环境中没有足够权限构建类加载器的,这会导致ElasticSearch源码启动时报安全权限错误;

打开你所配置的 java.policy 文件,在文件中的 grant 结构末尾加上以下权限指令:

permission java.lang.RuntimePermission "createClassLoader";

 

在配置文件中设置 node.name, 不然会启动失败,报空指针错误

ElasticSearch-在加载配置文件时,如果没有设置 node.name,程序会去获取系统中的HOSTNAME环境变量作为默认值,若系统中没有配置环境变量HOSTNAME,则获取到的值为空,导致在验参阶段时会跳出空指针错误。

因此,为避免该错误,可以对 -Des.path.conf 路径中的配置文件elasticsearch.yml,进行如下设置,以指定节点名:

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: es-demo
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: es-demo-node

 

一切就绪。点击你的debug按钮吧

0条评论
0 / 1000
1****n
10文章数
0粉丝数
1****n
10 文章 | 0 粉丝
原创

用idea本地调试Elasticsearch

2023-11-02 02:10:43
93
0

1.准备工作

      1.1 源码包下载

      这个不多说了,直接去github clone吧。

 

      1.2 编译工具-Gradle

      ElasticSearch每个版本对于gradle版本的要求都可能会变化,所以我们直接去源码包中查看当前需要的gradle版本,然后去官网下载。

      源码包中,找到文件名gradle-wrapper.properties的配置文件,并找到下面这个配置,更换为自己下载的gradle包

 

      1.3 java环境

      直接去官网对着elasticsearch的版本查,本文用OracleJdk-17

 

2. 环境变量配置

      以linux系统为例

      配置完之后执行 source bash_profile 立即生效

 

查看配置 gradle -v

 

3. 提速工作

      3.1 Gradle换源

      编译ElasticSearch需要下载很多依赖包,而其中有很多包的站源是国外的,下载时比较慢。 因此需要给Gradle换成国内镜像源,提升依赖包下载速度。 在 GRADLE_HOME 目录中的 init.d 下,创建文件 init.gradle ,并贴上如下内容:

 

      3.2 ElasticSearch源码包换Gradle分发地址

打开你下载下来的 ElasticSearch 源码包,进入目录 gradle/wrapper。然后,重新将 GRADLE_HOME 打包成 gradle-8.1.1-all.zip,拷贝到该目录下。

随后,打开文件 gradle-wrapper.properties,如下:

上述文件原计划的 distributionUrl 默认为官网下载地址。
意思是在编译源码初期,程序会去搜寻指定好的 gradle-8.1.1-all.zip 压缩文件,然后解压下载。
但官网有时下载特别慢,会导致编译第一步就卡壳了。

本文初已提供了 gradle-6.5-all.zip 的快速下载方式,便于使用。
所以这里并不需要再次进行下载,

因此在文件中指定 distributionUrl = gradle-8.1.1-all.zip,就在本地文件目录即可。
这样可以快速跳过编译前期漫长的下载 gradle-8.1.1-all.zip 的等待时间。

 

4. 编译ElasticSearch源码

      4.1 用 IntelliJ Idea 打开 ElasticSearch 源码根目录中的 build.gradle 文件,如下图:

      4.2 如下图中进行gradle配置,配置完成后,点 "OK" 。

 

      4.3 如下图中操作,进行源码编译

 

      4.4 正在编译中,慢慢等吧

 

 

5. 启动ElasticSearch 源码

      5.1 本地启动

      创建一个Java-Application 启动配置,并填写相关配置,红框部分特别注意

 

      VM options配置如下:

      

#指定上文中你所下载的 ElasticSearch 客户端安装路径
-Des.path.home=xxxxxx
#指定客户端安装路径中的配置路径
-Des.path.conf=xxxxxxx
-Dlog4j2.disable.jmx=true
-Xmx4g
-Xms4g

 

默认安装的 Jdk-17 环境中没有足够权限构建类加载器的,这会导致ElasticSearch源码启动时报安全权限错误;

打开你所配置的 java.policy 文件,在文件中的 grant 结构末尾加上以下权限指令:

permission java.lang.RuntimePermission "createClassLoader";

 

在配置文件中设置 node.name, 不然会启动失败,报空指针错误

ElasticSearch-在加载配置文件时,如果没有设置 node.name,程序会去获取系统中的HOSTNAME环境变量作为默认值,若系统中没有配置环境变量HOSTNAME,则获取到的值为空,导致在验参阶段时会跳出空指针错误。

因此,为避免该错误,可以对 -Des.path.conf 路径中的配置文件elasticsearch.yml,进行如下设置,以指定节点名:

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: es-demo
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: es-demo-node

 

一切就绪。点击你的debug按钮吧

文章来自个人专栏
elasticsearch
10 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0