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 7.17.3编译和导入idea运行 -> 正文阅读

[大数据]Elasticsearch 7.17.3编译和导入idea运行

1、下载源码

elasticsearch-7.17.3.zip源码:github elastic下载elastic官网下载
JDK/OpenJDK 17:可用jvm-and-jdk,本文使用Liberica JDK 17.0.3
gradle-7.4.2-all.zip:gradle官网gradle-7.4.2-all.zip

JDK17和gradle-7.4.2-all安装配置,本文省略,需要配置好PATH环境变量。

以前写过idea导入Elasticsearch 7.10.2源码和编译运行,不过7.17.3源码目录与7.10.2不同,并增加3个与构建相关的项目,作为复合构建包含在Elasticsearch构建中,相关说明BUILDING.md

build-conventions

用于所有elasticsearch项目的构建约定。

build-tools

包含了为第三方elasticsearch插件作者发布的构建逻辑,提供以下插件:
elasticsearch.esplugin -gradle插件,用于构建elasticsearch插件。  
elasticsearch.testclusters -gradle插件,用于在构建中设置es集群进行测试。  
这个项目是作为elasticsearch版本的一部分发布的,可以通过org.elasticsearch.gradle:build-tools:<versionNumber>访问。 由elastic维护的elasticsearch-hadoop项目也使用这些构建工具。

build-tools-internal

包含所有与elasticsearch项目相关的构建逻辑,这些构建逻辑不打算与其他内部或外部项目共享。

下载elasticsearch-7.17.3.zip,并解压在D:\dev\es\elasticsearch-7.17.3,目录如下
在这里插入图片描述

2、Gradle编译打包

Elasticsearch 7.17.3源码的README文件,提供的编译打包命令:

gradlew localDistro # 为本地系统构建一个发行版本
gradlew :distribution:archives:linux-tar:assemble    #
gradlew :distribution:archives:darwin-tar:assemble   #
gradlew :distribution:archives:windows-zip:assemble  #
gradlew assemble    # 为所有支持系统构建发行版本

命令行下输入命令进行编译

gradlew localDistro

然后进入漫长的编译等待,在编译完成后,会继续进入打包环节。
最终发行版本会保存在两个目录:

# 两个目录的内容完全一样
elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT
elasticsearch-7.17.3\distribution\archives\windows-zip\build\install\elasticsearch-7.17.3-SNAPSHOT

elasticsearch-7.17.3\build-tools-internal\build.gradle第178行,里面限制了必须大于最小版本(es7.17.3要求jdk16)编译使用的JDK版本,看官网介绍,使用其它版本也是可以的,不过需要注释掉下边的版本检测代码。

if (JavaVersion.current() < JavaVersion.toVersion(minCompilerJava)) {
    throw new GradleException("Java ${minCompilerJava} is required to build Elasticsearch but current Java is version ${JavaVersion.current()}.")
}

发行的版本都会内置JDK,因此编译时会自动下载adoptium openjdk18,在 elasticsearch-7.17.3\build-tools-internal\version.properties文件第4行指定。

bundled_jdk_vendor = adoptium
bundled_jdk = 18+36

openjdk18下载成功后,会保存在下边目录:
C:\Users\用户名\.gradle\caches\modules-2\files-2.1\adoptium_18\windows\18\2e9542c46033e6760b1b214104f2b352e4d659a2\windows-18-x64.zip
在这里插入图片描述
直到出现BUILD SUCCESSFUL,编译完成。可以在当前目录下的build和distribution文件夹内找到编译成功后的文件。

3、在IDEA运行

3.1、IDEA打开build.gradle

CONTRIBUTING.mdimporting-the-project-into-intellij-idea说明,

选择File > Open
在对话框中选择elasticsearch-7.17.3\build.gradle文件
在随后的对话框中选择Open as Project  

3.2、修改Gradle JVM

File > Settings…打开设置对话框,修改Gradle JVM为JDK17
在这里插入图片描述

如果IDEA没有自动重新加载,可以在窗口中点击重新加载所有Gradle项目。
在这里插入图片描述

在加载过程中也会需要下载一些依赖包,需要等待一段时间。

3.3、运行

完成加载后,在IDEA打开elasticsearch-7.17.3\server\src\main\java\org\elasticsearch\bootstrap\Elasticsearch.java文件,右键选择运行,运行会报错
错误1:

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

添加代码:System.setProperty(“es.path.conf”,“D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config”);

错误2:

Exception in thread "main" java.lang.IllegalStateException: path.home is not configured

添加代码:System.setProperty(“es.path.home”, “D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT”);

错误3:

java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

添加代码:System.setProperty(“log4j2.disable.jmx”, “true”);

错误4:

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")

创建java.policy文件

grant {
permission javax.management.MBeanServerPermission "createMBeanServer";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThread";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
};

添加代码:System.setProperty(“java.security.policy”, “D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config\java.policy”);

完整的代码如下:

public static void main(final String[] args) throws Exception {
    / 添加的代码//
    System.setProperty("es.path.conf","D:\\dev\\es\\elasticsearch-7.17.3\\build\\distribution\\local\\elasticsearch-7.17.3-SNAPSHOT\\config");
    System.setProperty("es.path.home", "D:\\dev\\es\\elasticsearch-7.17.3\\build\\distribution\\local\\elasticsearch-7.17.3-SNAPSHOT");
    System.setProperty("log4j2.disable.jmx", "true");
    System.setProperty("java.security.policy", "D:\\dev\\es\\elasticsearch-7.17.3\\build\\distribution\\local\\elasticsearch-7.17.3-SNAPSHOT\\config\\java.policy");
    / 添加的代码//

    overrideDnsCachePolicyProperties();
    ......
}

运行效果
在这里插入图片描述
访问http://localhost:9200/
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:56:15  更:2022-04-28 11:57:15 
 
开发: 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 0:59:43-

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