zoukankan      html  css  js  c++  java
  • ElasticSearch本地调测环境构建

    ElasicSearch版本:6.0.0:https://github.com/elastic/elasticsearch.git

    1:安装JVM(JVM1.8以上)

    2:安装gradle(3.3以上)

    下载:gradle下载地址:http://services.gradle.org/distributions/,下载4.3版本。(本人第一次安装的是4.4.5,结果到后面执行gradle idea指令的时候,下载不到gradle-logger-4.4.5的包,阿里的maven或者jcenter都没有,最新的归档的只有4.3)

    环境变量:配置GRADLE_HOME到你的gradle根目录当中,然后把%GRADLE_HOME%/bin加到PATH的环境变量。

    检查:进入cmd控制台,执行gradle -V,会输出Groovy,JVM等的版本,说明安装OK

    3:下载elasticsearch源码:

    下载ElasticSearch代码:https://github.com/elastic/elasticsearch,(本人下载的是6.0.0版本):

    4:配置软件包仓库源地址(如果忍受得了下载的网速,此步骤可选。此步骤因为需要从包仓库jcenter或者apache的maven库下载依赖额所有jar,会很漫长,耗费了40分钟,使用国内的仓库源,只需要5分钟即可)

    • C:Users用户.gradle下建立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://repo.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

            }

        }

    }

    • 编辑${elasticsearch源码根目录}distributionuild.gradle文件,红色部分替换为如下。

    buildscript {

      repositories {

        maven {

          url "http://maven.aliyun.com/nexus/content/groups/public/"

        }

      }

      dependencies {

        classpath 'com.netflix.nebula:gradle-ospackage-plugin:3.4.0'

      }

    }

    5:执行gradle idea

    cmd控制台进入elasticsearch源码根目录,执行gradle idea。(idea导入源码前,必须进行此步骤,否则会报错)

     

    6:ElasticSearch工程导入IDEA

    IDEA导入工程,导入的时候需要设置gradle_home,配置为gradle的安装根目录。勾选Offline work(否则会连到官网私服下载,会超级慢)和Use local gradle distribution。

    7:编译

    IDEA中view->tool windows->gradle点击,在gradle project视图栏目里找到core工程,点击build编译,也可以选择jar,编译后会在coreuilddistributions下生成elasticsearch的jar包。

     

    8:启动

    Elasticsearch的启动类:org.elasticsearch.bootstrap.Elasticsearch,右键运行。

    错误一:

    Error:Unable to make the module: core_main, related gradle configuration was not

    执行

    解决方式:刷新gradle工程

     

    问题二:启动报错

     

    解决方式:

    搞了半天是IDEA和gradle的兼容性bug问题:

    https://stackoverflow.com/questions/42587487/noclassdeffounderror-after-intellij-idea-upgrade

    编译无问题,运行时找不到依赖的类。

     

    根据所说,此bug在IDEA的新版本解决了,but我的IDEA版本是:2016.3.4

    官网下载IDEA 2017.2.5版本:

    https://www.jetbrains.com/idea/download/previous.html?fromIDE=

    新版本安装后,此问题解决。

    问题三:启动包es.path.conf未设置。

     

    查看源码的启动脚本:

    distributionsrcmain esourcesin下elasticsearch.sh中:

     

    所需的配置文件在源码的位置:

    G:github-javaelasticsearch-6.0.0distributionsrcmain esourcesconfig。故而设置两个JVM环境变量即可:

     

    再次启动此问题解决。

    问题四:access denied ("javax.management.MBeanTrustPermission" "register")

     

    解决方式:设置JVM环境变量如下:-Dlog4j2.disable.jmx=true

     

    问题五:加载不到plugin。

    解决方式:参照发行版,发行版目录下有空的plugins目录,在G:github-javaelasticsearch-6.0.0distributionsrcmain esources下也建立空的plugins目录。

    问题六:Unsupported transport.type

     

    解决方式:将发行版mudules目录下内容拷贝过来。

    问题七:空指针异常:

     

    跟踪源码,发现如下原因:ES中对于modules中对于jar包名称包含elasticsearch-rest-client.jar包的,在编译的时候,因为本地编译默认是snapshot的,所以会追加snapshot,这样的化版本号变为了6.0.0-snapshot,而modules中是从发行版拷贝过来的,结合代码上追加的codebase,变为了codebase.elasticsearch-rest-client-6.0.0.jar,这样index版本号就出错了。

     

    解决方式:修改org.elasticsearch.Build 74行,

    // isSnapshot = true; by angie_hawk7

    isSnapshot = false;

     

    也可以设置jvm环境变量:build.snapshot

    再次启动OK

     

    10:测试

  • 相关阅读:
    [转发]深入理解git,从研究git目录开始
    iOS系统网络抓包方法
    charles抓包工具
    iOS多线程中performSelector: 和dispatch_time的不同
    IOS Core Animation Advanced Techniques的学习笔记(五)
    IOS Core Animation Advanced Techniques的学习笔记(四)
    IOS Core Animation Advanced Techniques的学习笔记(三)
    IOS Core Animation Advanced Techniques的学习笔记(二)
    IOS Core Animation Advanced Techniques的学习笔记(一)
    VirtualBox复制CentOS后提示Device eth0 does not seem to be present的解决方法
  • 原文地址:https://www.cnblogs.com/hrbeu05/p/7954555.html
Copyright © 2011-2022 走看看