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”);

错误5

java.lang.IllegalArgumentException: Unknown codebases [codebase.elasticsearch-plugin-classloader, codebase.elasticsearch, codebase.elasticsearch-secure-sm]

修改elasticsearch-7.17.3/server/out/production/resources/org/elasticsearch/bootstrap/security.policy文件,注释下边内容:

//grant codeBase "${codebase.elasticsearch-secure-sm}" {
//  permission java.security.AllPermission;
//};

//grant codeBase "${codebase.elasticsearch}" {
  // needed for loading plugins which may expect the context class loader to be set
//  permission java.lang.RuntimePermission "setContextClassLoader";
  // needed for SPI class loading
//  permission java.lang.RuntimePermission "accessDeclaredMembers";
//};

//grant codeBase "${codebase.elasticsearch}" {
  // needed for loading plugins which may expect the context class loader to be set
//  permission java.lang.RuntimePermission "setContextClassLoader";
  // needed for SPI class loading
//  permission java.lang.RuntimePermission "accessDeclaredMembers";
//};

完整的代码如下:

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/
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Elasticsearch7.17.3是一个开源的分布式搜索和分析引擎。它可以用于实时搜索、日志分析、数据可视化等多种场景。在安装Elasticsearch7.17.3之前,你需要先安装ik分词器,你可以按照以下步骤进行安装: 1. 在es的plugins外部的映射文件下执行以下命令: ``` wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip unzip elasticsearch-analysis-ik-7.17.3.zip ``` 2. 如果在容器外的映射文件plugins下修改安装的ik文件权限: ``` chmod -R 777 elasticsearch-analysis-ik-7.17.3/ ``` 3. 进入es容器的/bin目录下,查看是否安装成功: ``` elasticsearch-plugin list ``` 在配置Kibana时,你可以按照以下步骤进行配置: 1. 打开kibana.yml文件,添加或修改以下内容: ``` server.port: 5601 server.host: 0.0.0.0 elasticsearch.hosts: ["http://远程访问es的Ip:9200"] xpack.monitoring.ui.container.elasticsearch.enabled: true elasticsearch.username: "elastic" elasticsearch.password: "elastic" i18n.locale: "zh-CN" ``` 关于Elasticsearch的查询方法,你可以参考下面的示例: ```java // 增加方法 List<Book> findByNameAndPrice(String name, Double price); // Elasticsearch json 查询 { "query": { "bool": { "must": [ { "query_string": { "query": "?", "fields": ["name"] } }, { "query_string": { "query": "?", "fields": ["price"] } } ] } } } package com.zhuang.es.service; import com.zhuang.es.entity.Book; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import java.util.List; public interface BookRepository extends ElasticsearchRepository<Book, Long> { List<Book> findByNameAndPrice(String name, Double price); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

penngo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值