下载es代码
下载好源码后,上传源码到需要编译的服务器
下载gradle版本
打开源码,查看对应es的gradle编译版本
jsx
cd ./elasticsearch-7.17.20/gradle/wrapper
vim gradle-wrapper.properties
下面是es7.17.20对应的gradle信息
jsx
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=194717442575a6f96e1c1befa2c30e9a4fc90f701d7aee33eb879b79e7ff05c0
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
下载gradle
services.gradle.org/distributio...
将下载的gradle包复制到 elasticsearch-7.17.20/gradle/wrapper
路径下
修改gradle-wrapper.properties信息,distributionUrl删除前缀,从本地load gradle
jsx
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=194717442575a6f96e1c1befa2c30e9a4fc90f701d7aee33eb879b79e7ff05c0
distributionUrl=gradle-8.7-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
修改Architecture.java
文件,添加loongarch64架构支持
文件路径为:/elasticsearch-7.17.20/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java
jsx
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.gradle;
public enum Architecture {
X64("x86_64", "linux/amd64"),
AARCH64("aarch64", "linux/arm64");
LOONGARCH64("loongarch64"); // ✅ 新增
public final String classifier;
public final String dockerPlatform;
Architecture(String classifier, String dockerPlatform) {
this.classifier = classifier;
this.dockerPlatform = dockerPlatform;
}
public static Architecture current() {
final String architecture = System.getProperty("os.arch", "");
switch (architecture) {
case "amd64":
case "x86_64":
return X64;
case "aarch64":
return AARCH64;
case "loongarch64": // ✅ 新增
return LOONGARCH64;
default:
throw new IllegalArgumentException("can not determine architecture from [" + architecture + "]");
}
}
}
编译es
执行下面的gradle命令,进行es编译
jsx
./gradlew :distribution:archives:linux-tar:assemble \
-x :x-pack:plugin:ml:build \
-x :x-pack:plugin:ml:bundlePlugin \
-x :x-pack:plugin:ml:assemble \
-x :x-pack:plugin:ml:processResources \
-x :x-pack:plugin:ml:jar \
-x :x-pack:plugin:ml:zip
构建成功后,包路径为:
jsx
distribution/archives/linux-tar/build/distributions/elasticsearch-7.17.20-SNAPSHOT.tar.gz
删除的x-pack-eql模块
路径如下:
jsx
elasticsearch-7.17.20-SNAPSHOT/modules/x-pack-eql
禁用ml等模块
修改es的配置config/elasticsearch.yml,添加如下配置:
jsx
xpack.security.enabled: false
xpack.ml.enabled: false
xpack.monitoring.enabled: false
xpack.watcher.enabled: false
注意事项
- 1.本文编译时,使用的jdk版本为openjdk-17构建