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:测试

  • 相关阅读:
    python的内置方法 isinstance && issubclass
    python类的内置方法
    反射(python内置方法)
    类装饰器 @property
    多态与多态性
    组合(对象1.属性=对象2)
    类的封装
    多继承 mro 继承顺序 与 菱形继承(钻石继承)
    类的继承派生&&重写
    封装 继承 多态 派生 组合定义 && 对象之间交互
  • 原文地址:https://www.cnblogs.com/hrbeu05/p/7954555.html
Copyright © 2011-2022 走看看