• Elasticsearch源码分析


    本篇文章首发于头条号Elasticsearch源码分析 - 源码构建,欢迎关注我的头条号和微信公众号“大数据技术和人工智能”(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的CSDN博客


    本篇介绍一下如何从源码构建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"
    }
    
  • 相关阅读:
    React简明学习
    react-router简明学习
    react组件生命周期
    在vue中使用css modules替代scroped
    深入理解javascript中的事件循环event-loop
    javascript中的内存管理和垃圾回收
    移动端中的陀螺仪
    基于create-react-app的再配置
    vscode常用设置
    更高效地使用搜索引擎
  • 原文地址:https://www.cnblogs.com/cjblogs/p/10792405.html
Copyright © 2020-2023  润新知