Elasticsearch 6.5源码编译最新版

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch 6.5源码编译最新版

6.5

源码编译启动

安装教程这里就不写了,百度下怎么安装就行版本我这安装的最新版

配置阿里云加速,找到安装的根目录,我这里是 /Users/cxt,在 mac 上就波浪线的目录,自己根据自己系统找到 gradle 安装目录即可

创建 init.gradle

cd /Users/cxt
# 此目录下有个隐藏文件夹gradle,注意小数点
cd .gradle
vim init.gradle

init.gradle 内容如下

allprojects{
    repositories {
        def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
        def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
        def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
        def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                    remove repo
                }
                if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
                    remove repo
                }
                if (url.startsWith('https://plugins.gradle.org/m2/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
                    remove repo
                }
            }
        }
        maven { url ALIYUN_REPOSITORY_URL }
        maven { url ALIYUN_JCENTER_URL }
        maven { url ALIYUN_GOOGLE_URL }
        maven { url ALIYUN_GRADLE_PLUGIN_URL }
    }
}
  • 环境
  • mac os 14
  • jdk-11
  • gradle
  • 本地 拉取 elasticsearch 源码放置位置,下面配置都是此为基础 /cxt/codework/github/es65/elasticsearch,最后一级为源码根目录
  • gradle 安装配置阿里云地址加速
  • 拉取源码
https://github.com/elastic/elasticsearc
  • 切换分支 6.5
cd elasticsearch
git checkout 6.5
  • 下载同版本二进制安装包为后面启动做准备,此处下载 6.5.4 的对应版本,6.5 的最高子版本,其它版本可自行查阅
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
// 其它版本参考链接
https://www.elastic.co/downloads/past-releases#elasticsearch
  • 下载 gradle-4.10-all.zip为什么下载这个版本呢,是因为我在下载完 elasticsearch 源码之后,查看 elasticsearch/gradle/wrapper/gradle-wrapper.properties 里面 distributionUrl 指定的为 gradle-4.10-all.zip 鉴于国内网络原因,先下载下来,更改使用本地
  • 下载 gradle-4.10-all.zip
https://services.gradle.org/distributions/gradle-4.10-all.zip
  • 复制 gradle-4.10-all.zip 到 elasticsearch/gradle/wrapper/gradle-4.10-all.zip,与 gradle-wrapper.properties 同级
  • 更改 elasticsearch/gradle/wrapper/gradle-wrapper.properties 内容如下,主要是 distributionUrl 指定同级别目录下的 gradle-4.10-all.zip 即可
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=gradle-4.10-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionSha256Sum=fc049dcbcb245d5892bebae143bd515a78f6a5a93cec99d489b312dc0ce4aad9
  • 执行编译 为做导入 idea 做准备
cd elasticsearch
# 执行编译idea命令,如果报错可以根据提示加入命令参考排查,我这执行了一下./gradlew build 然后在执行gradle idea 就成功了
./gradlew idea
  • 导入 idea
  • 上一步 gradlew idea 执行成功之后会在 elasticsearch 目录下面生成一个elasticsearch.ipr文件,此时打开 idea ,选择 open 这个 ipr 文件即可自动导入
    注意:此处导入方式可使用 idea import Project ,但是本人在使用中发现导入不进去,然后使用 open elasticsearch.ipr 的方式可以正常启动,这个看个人情况吧
    openes
  • 导入之后选择右上角 Project Structure ,设置项目 JDK 为 11
  • 打开 gradle 设置,设置 gradle 中 Grad 了 JVM 为 Use Project JDK


  • 复制二进制安装文件导入源码编译文件夹
  • 解压刚才下载的 elasticsearch-6.5.4.tar.gz 压缩包
  • 复制 elasticsearch-6.5.4/config 文件夹到源码 elasticsearch/config
  • elasticsearch/config 下新建 java.policy
    内容为
grant {
    permission java.lang.RuntimePermission "createClassLoader";
};
  • 在源码 elasticsearch 文件夹下新建文件夹 home
  • 复制 elastic search-6.5.4/modules 到源码 elasticsearch/home/modules
  • 完成的目录结构大体如下
    elasticsearch(6.5 分支)
    ------ config
    ------ home
      ------module
  • 执行启动代码
org.elasticsearch.bootstrap.Elasticsearch#main
  • 启动 es
    执行 main 方法
  • 访问 http://localhost:9200/ 启动成功
  • 设置 include dependencies

  • 编辑启动配置
    VM options 加入参数,参数含义见下方启动问题解决模块解析
-Des.path.conf=/cxt/codework/github/es65/elasticsearch/config
-Des.path.home=/cxt/codework/github/es65/elasticsearch/home
-Djava.security.policy=/cxt/codework/github/es65/elasticsearch/config/java.policy
-Dlog4j2.disable.jmx=true
  • 启动类位置

启动问题解决

  • 问题 1: the system property [es.path.conf] must be set
    解决:加入下方启动参数
-Des.path.conf=/cxt/codework/github/es65/elasticsearch/config
  • 问题 2: Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
    解决:加入下方启动参数
-Des.path.home=/cxt/codework/github/es65/elasticsearch/home
  • 问题 3: Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")解决:
  • 新建 java.policy
grant {
    permission java.lang.RuntimePermission "createClassLoader";
};
  • 加入启动参数
-Djava.security.policy=/cxt/codework/github/es65/elasticsearch/config/java.policy
-Dlog4j2.disable.jmx=true
  • 问题 4: Plugin [percolator] was built for Elasticsearch version 6.5.4 but version 6.5.5 is running
    解决:
    注释掉 org.elasticsearch.plugins.PluginsService 里面 verifyCompatibility(bundle.plugin);这一行代码

attach 进程调试(一种更简单的调试源码方式)

  • 拉取代码切换分支启动 debug 调试
git checkout 6.5
./gradlew run --debug-jvm
  • 打开 idea attach 进程,位置 Run-->Attach to Process,选中刚才启动的程序

 

 



 

 

 

 

 

 

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7月前
|
JSON 监控 Java
Elasticsearch 8.X reindex 源码剖析及提速指南
Elasticsearch 8.X reindex 源码剖析及提速指南
100 0
|
4月前
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
66 0
|
7月前
|
Kubernetes Java 索引
Elasticsearch 源码探究 001——故障探测和恢复机制
Elasticsearch 源码探究 001——故障探测和恢复机制
98 0
|
7月前
|
前端开发 Java iOS开发
elasticsearch8.1源码编译笔记
elasticsearch8.1源码编译笔记
144 0
|
7月前
|
Java iOS开发 MacOS
Elasticsearch7.4源码编译记录
Elasticsearch7.4源码编译记录
58 0
|
7月前
|
NoSQL Java API
SpringBoot【ElasticSearch集成 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(依赖+配置+增删改查测试源码)推荐使用
SpringBoot【ElasticSearch集成 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(依赖+配置+增删改查测试源码)推荐使用
119 0
|
7月前
|
Java API
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
258 0
|
Java 应用服务中间件
Elasticsearch-Jest 配置ES集群&源码解读
Elasticsearch-Jest 配置ES集群&源码解读
188 0
|
固态存储 架构师 开发工具
|
Ubuntu Java 程序员
Elasticsearch6.1.2源码下载和编译构建
为了深入学习elasticsearch,研究其源码是种有效途径,本文简述了从下载到编译构建再运行起来的全部过程
218 0
Elasticsearch6.1.2源码下载和编译构建