Intellij Idea编译Elasticsearch源码

简介: 如果想阅读Elasticsearch源码,定制功能,不可避免的要编译Elasticsearch。本文图文并茂,介绍如何使用Intellij Idea编译Elasticsearch源码包。

如果想阅读Elasticsearch源码,定制功能,不可避免的要编译Elasticsearch。本文图文并茂,介绍如何使用Intellij Idea编译Elasticsearch源码包。

一、软件环境

Intellij Idea:2017.1版本

Elasticsearch源码版本:2.3.3

JDK:jdk1.7.0_80.jdk
OS:OS X Yosemite 10.10.3

二、下载Elasticsearch源码

Elasticsearch的发行版本,也就是用户使用的版本要到Elastic官网下载,源码包要到github上下载,下载地址:https://github.com/elastic/elasticsearch/releases,如下图所示下载Elasticsearch 2.3.3版本,选择tar.gz格式。
这里写图片描述

解压缩到本地,我这里的路径为/Users/bee/Documents/es/elasticsearch-2.3.3,解压后elasticsearch-2.3.3目录下的core文件夹就是源码包的位置,如下图所示。
这里写图片描述

三、加入config目录

把运行版本的elasticsearch-2.3.3目录下的config文件(elasticsearch.yml所在位置)夹拷贝到/Users/bee/Documents/es/elasticsearch-2.3.3/core目录下,config目录下的文件如下。

elasticsearch-2.3.3
   --config
      --elasticsearch.yml
      --logging.yml     
      --scripts

四、Intellij Idea导入源码

打开Intellij Idea,选择Import Project,下一步。

这里写图片描述

选择elasticsearch-2.3.3/core所在路径,下一步。

这里写图片描述

选择默认的pom,下一步。

这里写图片描述

选择默认的配置,下一步。

这里写图片描述

选择JDK版本,如果有多个JDK,可以在这里进行选择。

这里写图片描述

设置工程名称,下一步。

这里写图片描述

工程导入完成以后,在src/main/java目录下找到org.elasticsearch.bootstrap包下的elasticsearch.java,这时候单独运行会报错,运行之前配置elasticsearch.java的参数,点击Edit Eonfiguration(菜单路径Run->Edit Eonfiguration)。

这里写图片描述

配置参数:
VM Options中增加-Des.path.home路径为ES源码包位置。

-Des.path.home=/Users/bee/Documents/es/elasticsearch-2.3.3/core

Program arguments中增加

start

这里写图片描述

点击OK,运行elasticsearch.java。

这里写图片描述

如果一切顺利,可以在console中看到以下输出。

这里写图片描述

访问http://localhost:9200/:

这里写图片描述

至此,Intellij Idea编译Elasticsearch源码成功!

五、关于JDK版本

第一次编译的时候使用的是jdk1.8.0_112.jdk,出现以下错误,改成最新的jdk1.8.0_121.jdk仍然不行,后来发现是mac版JDK的一个bug,换成jdk1.7.0_80.jdk一切OK。

objc[413]: Class JavaLaunchHelper is implemented in both
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java and 
/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/lib/libinstrument.dylib. 
One of the two will be used. Which one is undefined.

这里写图片描述

参考资料

http://stackoverflow.com/questions/23590613/java-8-class-javalaunchhelper-is-implemented-in-both

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
936 27
|
IDE Oracle Java
day4:JDK、IntelliJ IDEA的安装和环境变量配置
【7月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
987 0
|
IDE 程序员 开发工具
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
3292 13
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
1314 2
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
863 0
|
缓存 Java Maven
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
1101 0
|
存储 Oracle Java
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
360 0
|
移动开发 小程序 关系型数据库
java+ IDEA+ Uniapp+ mysql医院3D智能导诊系统源码
这是一个基于Java、IDEA、Uniapp和MySQL的医院3D智能导诊系统,采用Springboot后端框架和Redis、Mybatis Plus、RocketMQ等技术。系统通过对话式交互,精准推荐就诊科室,解决患者挂号困扰。它还具备智能预问诊功能,提升诊疗效率和准确性,确保医生能快速了解患者详情。此系统还支持小程序和H5,方便患者使用。
500 0
|
监控 IDE Java
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
探索 IntelliJ IDEA 中 Spring Boot 运行配置选项及其作用
2320 0