ElasticSearch 7.17.20本地源码调试
使用本地安装gradle下载相关依赖(加速下载)
在gradle安装目录下的init.d目录中,创建初始化脚本init.gradle
,添加如下脚本,将其中的maven仓库源全部换成国内镜像
allprojects{ repositories { def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith('https://repo.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) { project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL." remove repo } } } maven { url REPOSITORY_URL } } }
gradle :distribution:archives:no-jdk-linux-tar:assemble
编译linux版本
本地编译
github下载最新的源码,https://github.com/elastic/elasticsearch/tree/v7.17.20
修改wrapper.properties的gradle源:https://mirrors.cloud.tencent.com/gradle/gradle-8.5-all.zip
注意:必须是当前主分支最新的代码,否则旧版本可能有些依赖已经无法下载,导致无法编译。
gradlew :distribution:archives:no-jdk-linux-tar:assemble
编译linux版本
编译完成后会在\elasticsearch-7.17.20\distribution\archives\no-jdk-linux-tar\build\distributions
下生成tar.gz
本地调试
在当前目录下创建es home目录:myes
启动配置:
-Des.path.home=./myes -Des.path.conf=./myes/config -Dlog4j2.disable.jmx=true -Djava.security.policy=./myes/config/elasticsearch.policy
unsuppored transport.type问题、log4j2文件缺失问题
本地编译一下windows版本,将编译结果目录中的log4j2.properties配置放入myes/config
目录。将编译结果中的modules
目录内容放入myes
下
access denied问题
在config
目录下创建文件elasticsearch.policy
,添加如下内容:
grant { permission javax.management.MBeanTrustPermission "register"; permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "setContextClassLoader"; permission java.lang.RuntimePermission "accessDeclaredMembers"; permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup"; };
Unknown codebases问题
将server资源中0\server\src\main\resources\org\elasticsearch\bootstrap\security.policy
报Unknown codebases
的注释掉:
/* 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-plugin-classloader}" { // needed to create the classloader which allows plugins to extend other plugins permission java.lang.RuntimePermission "createClassLoader"; }; */
启动类在server模块下:org.elasticsearch.bootstrap.Elasticsearch
浏览器localhsot:9200
访问
本文来自博客园,作者:Bingmous,转载请注明原文链接:https://www.cnblogs.com/bingmous/p/18150117
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?