欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

5.4es 源码 搭建

架构&设计模式 water 195℃ 0评论

一 idea 运行

1) github下载

2) 5.0之后使用gradle管理项目依赖,5.4使用gradle 3.3+,先把gradle安装好 ,下载gradle-3.3-bin.zip

3) gradle的仓库需要翻墙,使用阿里云maven镜像,创建gradle 的初始化脚本 init.gradle放到 userhome/.gradle下,eg:root用户放到 /root/.gradle下,

这个初始化脚本的目的就是为了替换 jcenter()或者mavenCentral()

把下面代码拷贝到一个文本文件里 取名init.gradle就可以了

allprojects{

    repositories { 

        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'

        all { ArtifactRepository repo ->

            if(repo instanceof MavenArtifactRepository){

                def url = repo.url.toString()

                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {

                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."

                    remove repo

                }

            }

        }

        maven {

            url REPOSITORY_URL

        }

    }

}

4) 修改本地资源库

修改根目录 build.gradle:

allprojects {

  apply plugin: 'idea'

  if (isIdea) {

    project.buildDir = file('build-idea')

  }

repositories {

        maven{ url 'http://10.58.50.26:8082/nexus/content/groups/public/'}

 }

5)运行 gradle idea 编译项目 ,时间比较长

6)导入 idea

7) 配置运行参数 path.home

-Des.path.home=/server/downcode/elasticsearch-5.5.1/distribution/src/main/resources(这个目录下必须有config,以及以下的三个配置文件 ;还有一个plugins目录,自己创建吧)

8)开始run以下试试 应该跑不通,提示 transport type [] 的错误,因为5.0之后transport模块也移到modules里,与core分开的,两个解决方式

 a  不想debug transport或者使用独立的插件集成环境debug transport,可以将打包之后的modules模块拷贝到 -Des.path.home 目录下的modules目录下

 b  修改源码node 类 使用classpath 加入modules 比如添加一个方法如下:

   public List<Class<? extends Plugin>>   getModuls(){

        List<Class<? extends Plugin>>   classpathPlugins=new ArrayList<Class<? extends Plugin>>();

        classpathPlugins.add(Netty4Plugin.class);

        classpathPlugins.add(Netty3Plugin.class);

        classpathPlugins.add(ReindexPlugin.class);

        classpathPlugins.add(PercolatorPlugin.class);

        classpathPlugins.add(PainlessPlugin.class);

        classpathPlugins.add(MustachePlugin.class);

//     classpathPlugins.add(GroovyPlugin.class);

//     classpathPlugins.add(ExpressionPlugin.class);

        classpathPlugins.add(IngestCommonPlugin.class);

        classpathPlugins.add(MatrixAggregationPlugin.class);

        return classpathPlugins;

    }并且修改node 构造函数中初始化 pluginsService 的参数 替换classpathPlugins为 getModules()方法

9) 导入依赖会提示,会有循环以来,不用管这个 确定就行。

10) 另外 5.0之后es已经没有是否在root用户下启动 的参数,代码是写死的必须root目录,可以把检查是否root用的代码注释掉,bootstrap类里:

//        if (Natives.definitelyRunningAsRoot()) {

//            throw new RuntimeException("can not run elasticsearch as root");

//        }

ok  run 

转载请注明:学时网 » 5.4es 源码 搭建

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!

305889407