Intellij Idea编译Elasticsearch源码

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 如果想阅读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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
11天前
|
Java 开发工具 Maven
IntelliJ IDEA安装教程(超详细)
IntelliJ IDEA安装教程(超详细)
58 1
|
17天前
|
XML IDE 开发工具
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
36 0
|
1月前
|
IDE Java 开发工具
如何安装intellij IDEA
如何安装intellij IDEA
|
23天前
|
Java 编译器
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
31 0
|
6天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
15 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
|
6天前
|
安全
IntelliJ IDEA 快捷键大全(三)
IntelliJ IDEA 快捷键大全
53 0
IntelliJ IDEA 快捷键大全(三)
|
28天前
|
Java 开发工具 数据库
IntelliJ IDEA 面试题及答案整理,最新面试题
IntelliJ IDEA 面试题及答案整理,最新面试题
60 0
|
1月前
|
前端开发 Linux 开发工具
选择文本编辑器:为什么我钟爱IntelliJ IDEA
选择文本编辑器:为什么我钟爱IntelliJ IDEA
24 0
|
1月前
IntelliJ IDEA汉化
IntelliJ IDEA汉化
19 0
|
1月前
|
数据可视化 Java Maven
爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传
还记得刚开始工作的时候使用的是Eclipse,后面是当时公司第一批尝鲜IDEA的人。刚开始用起来其实蛮麻烦的,因为最开始还是带着Eclipse的思维。 比如在Eclipse中一个workspace中可以有多个project,但是在IDEA中就没有workspace的概念了,取而代之的是project,一个project中可以有多个module。 已经不止N次的被读者问到有没有IDEA的教程,其实我觉得这就是一个工具,无非就是一个熟能生巧的过程。在N + 1次被问到的时候,我觉得有必要肝一份使用手册了! 我也去搜了一下,发现确实没有一个完整的系列教程,就算有也都是两三年前的版本了。