欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Elasticsearch源码分析 - 源码构建

程序员文章站 2022-09-27 13:40:37
原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483694&idx=1&sn=bd03afe5ab798b4732c1a3457d60c53b 本篇介绍一下如何从源码构建Elasticsearch,构建Elasticse ......

原文地址: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"
}