前提概要
本博客将搭建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目录
- 创建
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-package\elasticsearch\run_time_config_7.15.2 -Des.path.conf=D:\learn-package\elasticsearch\run_time_config_7.15.2\config -Djava.security.policy=D:\learn-package\elasticsearch\run_time_config_7.15.2\config\elasticsearch.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源码解析与优化实战