前提概要IDEA安装Gradle插件&导入工程创建ES的Home目录修改配置文件配置启动参数启动工程&验证坑&解决办法参考资料 客官且慢,点赞、收藏+关注 谢谢~
前提概要本博客将搭建ES7.15.2的本地运行环境
下载安装包:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-windows-x86_64.zip
下载源码:https://github.com/elastic/elasticsearch/tree/v7.15.2
安装JDK16:http://jdk.java.net/archive/
IDEA安装Gradle插件&导入工程- 打开Settins->plugins,搜索gradle安装插件解压从github上下载的源代码压缩文件使用idea打开解压文件
- 创建ES的Home目录,并命名为run_time_config_7.15.2解压下载的安装包elasticsearch-7.15.2-windows-x86_64.zip,拷贝config、lib、modules文件到run_time_config_7.15.2目录下
添加文件run_time_config_7.15.2/config/elasticsearch.policy
grant{
permission javax.management.MBeanTrustPermission "register";
permission javax.management.MBeanAwecwePermission "createMBeanServer";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThread";
permission java.lang.RuntimePermission "getClassLoader";
};
修改run_time_config_7.15.2/config/elasticsearch.yml文件,修改信息如下:
# 其他ip可以访问本地es network.host: 0.0.0.0 # 主节点候选节点ip,第一次启动集群需要该配置。 cluster.initial_master_nodes: ["localhost"]
修改policy文件/elasticsearch-7.15.2/server/out/production/resources/org/elasticsearch/bootstrap/security.policy;注释如下内容:
//grant codebase "${codebase.elasticsearch-secure-sm}" {
// permission java.security.AllPermission;
//};
Elasticsearch core:
These are only allowed inside the server jar, not in plugins
//grant codebase "${codebase.elasticsearch}" {
// needed for loading plugins which may expect the context class loader to be set
// permission java.lang.RuntimePermission "setContextClassLoader";
//};
//grant codebase "${codebase.elasticsearch-plugin-classloader}" {
// needed to create the classloader which allows plugins to extend other plugins
// permission java.lang.RuntimePermission "createClassLoader";
//};
本地启动需要配置JVM启动参数,设置java运行版本是16
ES工程使用IDEA打开后,点击右上角的Edit Configuration
在弹窗中点击左上角加号->Application
填写相关信息
选择JRE版本 16
填写模块elasticsearch.server.main
填写jvm参数(没有这个选项的,点击Modify options->add VM options);路径信息根据自己情况修改
-Des.path.home=D:learn-packageelasticsearchrun_time_config_7.15.2 -Des.path.conf=D:learn-packageelasticsearchrun_time_config_7.15.2config -Djava.security.policy=D:learn-packageelasticsearchrun_time_config_7.15.2configelasticsearch.policy -Dlog4j2.disable.jmx=true -Xms4g -Xmx4g
填写main方法所在类:org.elasticsearch.bootstrap.Elasticsearch
使用IDEA启动运行刚刚配置的Application
使用浏览器输入:localhost:9200
看到如下信息表示启动成功
{
"name" : "",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "pcU9WYv8SyeViQ_LQSNDCg",
"version" : {
"number" : "7.15.2",
"build_flavor" : "unknown",
"build_type" : "unknown",
"build_hash" : "unknown",
"build_date" : "unknown",
"build_snapshot" : true,
"lucene_version" : "8.9.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
启动报错:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
解决办法:
将下面信息加入到run_time_config_7.15.2/config/elasticsearch.policy中,如果出现类似报错,按照对应格式加入到该文件即可解决
permission java.lang.RuntimePermission "getClassLoader";参考资料
启动失败解决办法:https://elasticsearch.cn/question/11513
张超-Elasticsearch源码解析与优化实战
客官且慢,点赞、收藏+关注 谢谢~


