IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticsearch源码本地编译与开发 -> 正文阅读

[大数据]elasticsearch源码本地编译与开发

elasticsearch源码本地编译与开发

前言

为了方便学习elasticsearch(elasticsearch github传送门),很有必要在对代码进行编译,并在本地进行运行或调试。
本文记录了如何在本地通过idea打开es工程并编译源码,并且在idea中进行调试。

本地环境:
macOS:10.15.5
idea:2021.3.1(建议选用最新版本,之前碰到过由于idea版本过低导致无法正常导入的情况)
java:jdk15
es分支:7.10.2

以下步骤均针对于7.10.2版本,其它版本大同小异。

编译

1、下载es源码到本地
2、切换至需要使用的分支或者tag
切换到对应分支
git checkout branch_name
切换到对应tag
git checkout -b branch_name tag_name
为了切换到7.10.2所使用的tag
git checkout -b v7.10.2 v7.10.2
3、修改gradle仓库(切换到国内仓库)
添加文件到此路径下/Users/xxx/.gradle
文件名:init.gradle

allprojects{
    repositories {
        def REPOSITORY_URL = 'https://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

4、在代码根目录下执行
gradlew jar
正常情况下会最后输出:BUILD SUCCESSFUL
5、直接使用idea打开该工程
一般情况下即可正常导入。
若不能正常导入,检查idea中gradle的配置。主要关注一下3个地方的配置
image-20220213232652953

本地调试

1、对elasticsearch进行打包,根据本地不同的系统,命令也不一致。
在macos下建议使用
gradlew distribution:archives:oss-no-jdk-darwin-tar:assemble
其它系统使用的打包可使用如下命令进行构建
gradlew distribution:archives:xxx:assemble
其中xxx用如下工程名进行替换
image-20220213232801970

构建好的产物在代码根目录下
/distribution/archives/oss-no-jdk-darwin-tar/build/distributions
解压此工程,以便于后续使用。
2、打开org.elasticsearch.bootstrap.Elasticsearch,右键直接运行。
此时会出现异常,提示
ERROR: the system property [es.path.conf] must be set

添加vm option

-Des.path.home=/Users/XXX/Desktop/study/ElasticSearch/elasticsearch/distribution/archives/oss-no-jdk-darwin-tar/build/distributions/elasticsearch-7.10.2-SNAPSHOT
-Des.path.conf=/Users/XXX/Desktop/study/ElasticSearch/elasticsearch/distribution/archives/oss-no-jdk-darwin-tar/build/distributions/elasticsearch-7.10.2-SNAPSHOT/config
-Dlog4j2.disable.jmx=true
-Djava.security.policy=/Users/XXX/Desktop/study/ElasticSearch/elasticsearch/distribution/archives/oss-no-jdk-darwin-tar/build/distributions/elasticsearch-7.10.2-SNAPSHOT/config/elasticsearch.policy

其中 elasticsearch.policy中的内容如下

grant{
    permission javax.management.MBeanTrustPermission "register";
    permission javax.management.MBeanServerPermission "createMBeanServer";
    permission java.lang.RuntimePermission "createClassLoader";
    permission java.lang.RuntimePermission "setContextClassLoader";
};

大致配置选项如下图所示
image-20220213232833799

若出现如下异常信息:
java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader

需要修改server模块 build.gradle中84行
compileOnly project(':libs:elasticsearch-plugin-classloader')修改为compile project(':libs:elasticsearch-plugin-classloader')

成功启动后,即可正常使用es。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:14:25  更:2022-02-14 21:15:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:57:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码