一 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)运行 gradlew idea 编译项目 ,时间比较长(这个地方最好用gradlew)
6)导入 idea (直接用idea打开.ipr文件就可以,open)
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
-Des.path.conf=/home/lipeng-ds/project/elasticsearch-5.6.12/distribution/src/main/resources/config
-Des.path.home=/home/lipeng-ds/project/elasticsearch-5.6.12/distribution/src/main
-Dlog4j2.disable.jmx=true
-Djava.security.policy=/workspace/lipeng-ds/project/elasticsearch-5.6.12/distribution/src/main/resources/config/java.policy
修改es配置文件
cluster.name:
network.host:
discovery.type: single-node 添加这个配置,不然会好多安全启动检查
java.policy文件
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the “License”); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
grant {
// Hadoop UserGroupInformation, HdfsConstants, PipelineAck clinit
permission java.lang.RuntimePermission “getClassLoader”;
// UserGroupInformation (UGI) Metrics clinit
permission java.lang.RuntimePermission “accessDeclaredMembers”;
permission java.lang.reflect.ReflectPermission “suppressAccessChecks”;
// org.apache.hadoop.util.StringUtils clinit
permission java.util.PropertyPermission “*”, “read,write”;
// org.apache.hadoop.util.ShutdownHookManager clinit
permission java.lang.RuntimePermission “shutdownHooks”;
// JAAS is used always, we use a fake subject, hurts nobody
permission javax.security.auth.AuthPermission “getSubject”;
permission javax.security.auth.AuthPermission “doAs”;
permission javax.security.auth.AuthPermission “modifyPrivateCredentials”;
permission java.lang.RuntimePermission “accessDeclaredMembers”;
permission java.lang.RuntimePermission “getClassLoader”;
permission java.lang.RuntimePermission “shutdownHooks”;
permission java.lang.reflect.ReflectPermission “suppressAccessChecks”;
permission javax.security.auth.AuthPermission “doAs”;
permission javax.security.auth.AuthPermission “getSubject”;
permission javax.security.auth.AuthPermission “modifyPrivateCredentials”;
permission java.security.AllPermission;
permission java.util.PropertyPermission “*”, “read,write”;
permission javax.security.auth.PrivateCredentialPermission “org.apache.hadoop.security.Credentials * \”*\””, “read”;
};
另外可参考:http://laijianfeng.org/2018/08/%E6%95%99%E4%BD%A0%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95Elasticsearch-6-3-2%E6%BA%90%E7%A0%81/
转载请注明:学时网 » 5.6.12 elasticsearch es 源码 搭建