Elasticsearch源码分析 - 源码构建

原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483694&idx=1&sn=bd03afe5ab798b4732c1a3457d60c53b

本篇介绍一下如何从源码构建Elasticsearch,构建Elasticsearch源码是学习和研究Elasticsearch源码的基础,有助于更好的了解Elasticsearch。

环境准备

环境/软件 版本 备注
OS Ubuntu 14.04 LTS
Gradle 5.4
Java 9.0.4+11 Oracle Corporation 9.0.4 [OpenJDK 64-Bit Server VM 9.0.4+11]
Elasticsearch 6.2

从源码构建Elasticsearch需要注意下面几个问题:

1、从源码构建Elasticsearch需要使用Gradle,因此需要确认下是否安装了gradle,可以参考官网安装文档安装,安装步骤如下:

mkdir /opt/gradle
unzip -d /opt/gradle ./下载/gradle-5.4-bin.zip
ls /opt/gradle/gradle-5.4
#添加环境变量
vi ~/.bashrc
#在 ~/.bashrc 文件下面加上这句
export PATH=$PATH:/opt/gradle/gradle-5.4/bin
#使新增的环境变量即时生效
source ~/.bashrc
#检查 gradle 是否安装配置成功
gradle -v

2、Elasticsearch编译和运行时所要求的JDK版本是不一样的,以V6.2版本为例,Runtime要求最低JDK8,Compile要求最低JDK9。不同版本的Elasticsearch应该如何确定所需JDK运行时和编译的版本呢?可以在Elasticsearch的源码里找到,如下:

/*
 * Elasticsearch <= v6.3
*/
//代码文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8
static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_9
/*
 * Elasticsearch >= v6.4
*/
//代码文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
//这段代码对应的配置文件分别是下面这两个:
//buildSrc/src/main/resources/minimumCompilerVersion
//buildSrc/src/main/resources/minimumRuntimeVersion
JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumRuntimeVersion").text.trim()
)
JavaVersion minimumCompilerVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumCompilerVersion").text.trim()
)

3、在终端执行构建操作前建议把终端改为bash,不然可能会有点问题。

开始构建

具体步骤如下:

#下载源码
git clone https://github.com/elastic/elasticsearch.git
#进入源码目录
cd elasticsearch
#切换到一个稳定分支
git checkout 6.2
#构建源码
./gradlew assemble

看到下面输出表示构建成功了。

BUILD SUCCESSFUL in 10m 15s
505 actionable tasks: 505 executed

测试

构建成功后就可以启动Elasticsearch了,如下:

#在源码目录下执行
./gradlew run

启动成功后浏览器打开127.0.0.1:9200显示如下:

{
  "name" : "node-0",
  "cluster_name" : "distribution_run",
  "cluster_uuid" : "E3qa7TIkTTGNP32WizSyXg",
  "version" : {
    "number" : "6.2.5",
    "build_hash" : "e38fe8a",
    "build_date" : "2019-04-25T01:27:03.655047Z",
    "build_snapshot" : true,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

猜你喜欢

转载自www.cnblogs.com/cjblogs/p/10792405.html