十、ElasticSearch 实战 - 源码运行
一、概述
想深入理解 Elasticsearch,了解其报错机制,并有针对性的调整参数,阅读其源码是很有必要的。此外,了解优秀开源项目的代码架构,能够提高个人的代码架构能力
阅读 Elasticsearch 源码的第一步是搭建调试环境,参考 <编译调试Elasticsearch 6.3.2源码> 这篇文章完成了对 7.10.2 版本源码的调试工作
二、软件环境
- 操作系统:win11
- Elasticsearch 源码版本:7.10.2
- JDK版本:11.0.18
- Gradle版本:4gradle-6.6.1-all.zip
- IntelliJ IDEA 版本:2022.3.2
1. JDK 环境安装
Java SE Downloads 地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
环境配置教程参考
2. Elasticsearch源码
- Elasticsearch github 源码托管地址:https://github.com/elastic/elasticsearch.git
elasticsearch 源码 7.10.2 版本的资源也可以从 CSDN 下载
3. Gradle 的安装包
- 查看
elasticsearch\gradle\wrapper\gradle-wrapper.properties发现如下配置:distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip
- 根据
https\://services.gradle.org/distributions/gradle-6.6.1-all.zip网址下载 Gradle 的安装包wget https://services.gradle.org/distributions/gradle-6.6.1-all.zip- 注意:强烈建议使用魔法
- 放置
gradle-6.6.1-all.zip文件:- 复制
gradle-6.6.1-all.zip到elasticsearch\gradle\wrapper目录下,确保和elasticsearch\gradle\wrapper\gradle-wrapper.properties在同级目录。
- 复制
- 修改
elasticsearch\gradle\wrapper\gradle-wrapper.properties配置distributionUrl=gradle-6.6.1-all.zip
三、源码运行配置
1. IDEA 导入源码项目
IDEA:File->Open->选中es源码路径下build.gradle->Open as Project


2. 配置JDK
在 Project Structure 中选择JDK版本

3. Import gradle project
关闭 IDEA,重新打开即可,

这个过程还是需要等一小会的

4. 添加源码运行依赖
- elasticsearch 源码运行依赖 config 和 modules ,否则启动失败。
- 下载与 elasticsearch 源码同版本windows安装包。
- 创建
home目录,将同版本 windows 安装包的config和modules目录拷贝到home目录下。
- elasticsearch 源码运行添加安全策略,否则启动失败。
config目录下新建java.policy文件,内容如下
grant {permission javax.management.MBeanTrustPermission "register";permission java.lang.RuntimePermission "createClassLoader";permission java.lang.RuntimePermission "setContextClassLoader";permission java.lang.RuntimePermission "getClassLoader"; };
5. 配置启动参数
-
修改运行设置添加系统参数(推荐)
- 在 IDEA 中
Run/Debug Configurations的VM options:添加如下 VM 启动参数
-Des.path.conf=E:\Workshop\JAVA\elasticsearch-7.10.2\home\config -Des.path.home=E:\Workshop\JAVA\elasticsearch-7.10.2\home -Djava.security.policy=E:\Workshop\JAVA\elasticsearch-7.10.2\home\config\java.policy -Dlog4j2.disable.jmx=true - 在 IDEA 中
-
修改源码添加系统参数(偶尔会失败)
- 在 elasticsearch 源码
elasticsearch-7.10.2/server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java文件中添加如下系统参数:
public static void main(final String[] args) throws Exception {// 参数配置System.setProperty("es.path.conf","E:\\Workshop\\JAVA\\elasticsearch-7.10.2\\home\\config");System.setProperty("es.path.home", "E:\\Workshop\\JAVA\\elasticsearch-7.10.2\\home");System.setProperty("java.security.policy", "E:\\Workshop\\JAVA\\elasticsearch-7.10.2\\home");overrideDnsCachePolicyProperties();} - 在 elasticsearch 源码
6. 修改运行设置

- 配置
Main class->elasticsearch.benchmarks.main->org.elasticsearch.bootstrap.Elasticsearch - 从
Modify options-> 添加Add dependencies with "Provided" scope to classpath
7. 启动 elasticsearch
运行 Elasticsearch.main() 方法,启动 elasticsearch。
启动成功,访问 http://localhost:9200,返回如下:
{"name": "","cluster_name": "elasticsearch","cluster_uuid": "xrqe0WBqRACiBncjj-ANuA","version": {"number": "7.10.2","build_flavor": "unknown","build_type": "unknown","build_hash": "unknown","build_date": "unknown","build_snapshot": true,"lucene_version": "8.7.0","minimum_wire_compatibility_version": "6.8.0","minimum_index_compatibility_version": "6.0.0-beta1"},"tagline": "You Know, for Search"
}

开心!
四、错误调整
1. 错误一
ERROR: the system property [es.path.conf] must be set
-
问题原因:
未配置es.path.conf参数 -
解决方法:
参考 3.5 配置es.path.conf参数
2. 错误二
Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
-
问题原因:
未配置es.path.home参数 -
解决方法:
参考 3.5 配置es.path.home参数
3. 错误三
2023-04-25 22:21:11,044 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:358)
-
问题原因:
未设置安全策略文件java.policy或未设置log4j2.disable.jmx=true -
解决方法:
参考 3.5 配置security.policy参数
4. 错误四
[2023-04-25T22:27:38,439][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [main], exiting
java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader
-
问题原因:
IDEA 启动选项中未添加Add dependencies with "Provided" scope to classpath -
解决方法:
参考 3.6 修改运行设置
相关文章:
十、ElasticSearch 实战 - 源码运行
一、概述 想深入理解 Elasticsearch,了解其报错机制,并有针对性的调整参数,阅读其源码是很有必要的。此外,了解优秀开源项目的代码架构,能够提高个人的代码架构能力 阅读 Elasticsearch 源码的第一步是搭建调试环境&…...
GPT-3 论文阅读笔记
GPT-3模型出自论文《Language Models are Few-Shot Learners》是OpenAI在2020年5月发布的。 论文摘要翻译:最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调(fine-tuning),在许多NLP任务和基准测试上…...
方案解析丨数字人主播如何成为电商直播新标配
浙江省政府办公厅近日印发《关于进一步扩大消费促进高质量发展若干举措》支持电子商务直播发展。抢抓电子商务直播快速发展机遇,发展数字人虚拟主播、元宇宙新消费场景等新业态新模式。 随着电商直播快速发展,企业怎么高效地实现引流获客,成为…...
Python最全迭代器有哪些?
python中迭代器的使用是最广泛的,凡是使用for语句,其本质都是迭代器的应用。 从代码角度看,迭代器是实现了迭代器协议的对象或类。迭代器协议方法主要是两个: __iter__()__next__() __iter__()方法返回对象本身,他是…...
ESP32 网络计时器,包含自动保存
简介 本代码是基于ESP32开发板实现的一个计时器功能,具备倒计时、计时器时长选择、显示当前时间、有源蜂鸣器报警等功能。代码中使用了WiFi网络连接、NTP时间同步、EEPROM存储等功能。通过按钮控制计时器的开始、停止和计时器时长的选择。 运行原理概述 在ESP32开…...
【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?
Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 阿里版 ChatGPT 突然官宣 ChatGPT 技术在 AI 领域的重要性 自然语言生成 上下文连续性 多语言支持 ChatGPT 未来可能的应用场景 社交领域 商业领域 编辑 医疗领域…...
IPEmotion控制模块-PID循环应用
IPEmotion专业版、开发版支持控制模块,并且该模块支持函数发生器、PID控制器、路由器、序列控制和序列控制块以及参考曲线生成器。本文主要针对PID(P:Proportional control 比例控制;I:Integral control 积分控制&…...
【元分析研究方法】学习笔记2.检索文献(含100种学术文献搜索清单链接)
检索文献 该步骤的作用该步骤中需要注意的问题该步骤中部分知识点我的收获 参考来源:库珀 (Cooper, H. M. )., 李超平, & 张昱城. (2020). 元分析研究方法: A step-by step approach. 中国人民大学出版社. 该步骤的作用 1.识别相关文献的来源; 2.识别…...
题目:16版.自由落体
1、实验要求 本实验要求:模拟物体从10000米高空掉落后的反弹行为。 1-1. 创建工程并配置环境: 1-1.1. 限制1. 工程取名:SE_JAVA_EXP_E009。 1-1.2. 限制2. 创建包,取名:cn.campsg.java.experiment。 1-1.3. 限制3. 创建…...
视频可视化搭建项目,通过简单拖拽方式快速生产一个短视频
一、开源项目简介 《视搭》是一个视频可视化搭建项目。您可以通过简单的拖拽方式快速生产一个短视频,使用方式就像易企秀或百度 H5 等 h5 搭建工具一样的简单。目前行业内罕有关于视频可视化搭建的开源项目,《视搭》是一个相对比较完整的开源项目&#…...
network-1 4 layer internet model
4layer model applicationtransport tcp: transmission control protocol enable correct in-order delivery of data, running on top of the network layer service.udp: user datagram protocolnetwork packet:data、from、tonetwork->linkiplink source en…...
计算机网络笔记(横向)
该笔记也是我考研期间做的整理。一般网上的笔记是按照章节纪录的,我是按照知识点分类纪录的,大纲如下: 文章目录 1. 各报文1.1 各报文头部详解1.2 相关口诀 2. 各协议2.1 各应用层协议使用的传输层协议与端口2.2 各协议的过程2.2.1 数据链路层…...
0.redis-实践
1.redis内存设置多少,默认是0,不限制 2.如何配置,修改内存大小 1) 查看最大占用内存 # maxmeory <bytes> 或者 config get maxmemory 2) 默认内存多少可以用: 64位系统下不限制,32位下最多3G 3) 如何配置: 默认总内存的3/4 4) 如何修改…...
Redux的基本使用,从入门到入土
目录 一、初步使用Redux 1.安装Redux 2.配置状态机 二、Redux的核心概念 1.工作流程 2.工作流程 三、优化Redux 1.对action进行优化 2.type常量 3.reducer优化 四、react-redux使用 1.安装react-redux 2.全局注入store仓库 3.组件关联仓库 五、状态机的Hook 1.u…...
GDOUCTF2023-部分re复现
目录 [GDOUCTF 2023]Check_Your_Luck [GDOUCTF 2023]Tea [GDOUCTF 2023]doublegame [GDOUCTF 2023]Check_Your_Luck 打开题目是一串代码,明显的z3约束器求解 直接上脚本 import z3 from z3 import Reals z3.Solver() vReal(v) xReal(x) yReal(y) wReal(w) zRea…...
Java学习17(IO模型详解)
1、何为IO? I/O(Input/Outpu) 即输入/输出 。 从计算机结构的角度来解读一下 I/O。 根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。 输入设备(比如键盘&am…...
Vue-全局过滤器以及进阶操作
前言 上篇文件讲述了,Vue全局过滤器的基本使用:Vue过滤器的基本使用 本篇将延续上文,讲述vue中过滤器的进阶操作 过滤器传参 如果有一天,多个地方使用过滤器,而且需要传递参数,那么可以这么写 多个过滤…...
财报解读:涅槃重生之后,新东方还想再造一个“文旅甄选”?
新东方逐渐走出了“微笑曲线”。 图源:新东方2023财年Q3财报 2023年4月19日,新东方披露了2023财年Q3财报(截至2023年2月28日止),营收7.5亿美元,同比增长22.8%;归母净利润为8165万美元ÿ…...
华为OD机试 - 过滤组合字符串(Python)
题目描述 每个数字关联多个字母,关联关系如下: 0 关联 “a”,”b”,”c” 1 关联 “d”,”e”,”f” 2 关联 “g”,”h”,”i” 3 关联 “j”,”k”,”l” 4 关联 “m”,”n”,”o” 5 关联 “p”,”q”,”r” 6 关联 “s”,”t” 7 关联 “u”,”v” 8 关联 “w”,”x” 9 …...
maven简单使用
实验课的作业用一大堆框架/库,统统要用maven管理。 头一次用,真痛苦。 所幸得以解决,maven真香~ 一步一步来。 1. maven 不是java人,只能说说粗浅的理解了。 简单来说,maven是一个管理项目的工具&…...
auditd:Linux 系统审计日志,记录谁动了你的服务器
auditd:Linux 系统审计日志,记录谁动了你的服务器 服务器被入侵后,管理员面临的第一个问题往往不是"怎么修复",而是"到底发生了什么"——攻击者登录了哪个账号?修改了哪些文件?执行了什…...
4大技术支柱:构建Pixelle-Video的模块化AI视频生成系统
4大技术支柱:构建Pixelle-Video的模块化AI视频生成系统 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 传统视频制作流程需要…...
你的uniapp扫码功能总失灵?可能是PDA广播没配对!手把手教你从设备设置到代码监听
Uniapp与PDA扫码功能深度整合:从硬件配置到代码监听的完整指南 在移动应用开发领域,PDA(便携式数据采集终端)与Uniapp的整合已成为许多企业级应用的核心需求。特别是物流仓储、零售盘点等场景下,扫码功能的稳定性直接关…...
【限时公开】DeepSeek官方未披露的GPU最小可行配置表:单卡L4跑7B模型的温度/功耗/吞吐临界点实测数据
更多请点击: https://kaifayun.com 第一章:DeepSeek GPU资源需求全景概览 DeepSeek系列大模型(如DeepSeek-V2、DeepSeek-Coder、DeepSeek-MoE)在训练与推理阶段对GPU硬件存在显著差异化的资源依赖。理解其底层计算特征、显存占用…...
别再折腾gcc版本了!Ubuntu 20.04下用Docker一键搞定OLLVM编译环境
用Docker容器化技术快速搭建OLLVM混淆编译环境 在逆向工程和移动安全研究领域,代码混淆是一项基础而重要的技术。传统搭建OLLVM环境需要处理复杂的依赖关系、版本冲突等问题,往往让初学者望而却步。本文将介绍如何利用Docker技术,在Ubuntu 20…...
如何高效设计无刷直流电机控制器:Simscape Electrical完整解决方案指南
如何高效设计无刷直流电机控制器:Simscape Electrical完整解决方案指南 【免费下载链接】Design-motor-controllers-with-Simscape-Electrical This repository contains MATLAB and Simulink files used in the "How to design motor controllers using Simsc…...
从数据备份到模型部署:深入理解Numpy的.npy/.npz文件在机器学习流水线中的角色
从数据备份到模型部署:深入理解Numpy的.npy/.npz文件在机器学习流水线中的角色 在机器学习项目的完整生命周期中,数据的高效存储与快速读取往往是决定工程效率的关键因素之一。当我们谈论数据处理工具时,Numpy无疑是Python生态中不可忽视的核…...
OpCore Simplify:告别繁琐配置,轻松构建黑苹果OpenCore EFI的智能工具
OpCore Simplify:告别繁琐配置,轻松构建黑苹果OpenCore EFI的智能工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑…...
2026年最新推荐 很多一线老师都在用的英语作文批改工具
行业共性痛点拆解我们团队做英语教育技术落地5年,接触过全国上千位初高中英语老师,发现作文批改是大家公认的效率洼地。人工批改模式下,一个45人班的作文,每篇要改语法、逻辑、表达、扣题四个维度,最少花3分钟…...
屏蔽壳设计全解:材料选型、接地策略与EMC实战优化
摘要: 在高速数字电路、射频模块及工业通信设备中,电磁干扰(EMI/EMC)往往是产品认证路上的“拦路虎”。屏蔽壳(电磁屏蔽罩)作为抑制辐射骚扰最直接的手段,其材料选择、开孔尺寸、接地方式及结构…...
