Elasticsearch 소스 분석 - 소스 구축
본고는 어떻게 원본에서 Elasticsearch를 구축하는지 소개한다. Elasticsearch 원본을 구축하는 것은 Elasticsearch 원본을 배우고 연구하는 기초로 Elasticsearch를 더욱 잘 이해하는 데 도움이 된다.
환경 준비
환경/소프트웨어
버전
비고
OS
Ubuntu 14.04 LTS
Gradle
5.4
Java
9.0.4+11
Oracle Corporation 9.0.4 [OpenJDK 64-Bit Server VM 9.0.4+11]
Elasticsearch
6.2
소스 코드에서 Elasticsearch를 구축하려면 다음 몇 가지 문제를 고려해야 합니다.
1. 원본 코드에서 Elasticsearch를 구축하려면 Gradle을 사용해야 하기 때문에 gradle가 설치되었는지 확인해야 한다. 홈페이지 설치 문서를 참고하여 설치할 수 있다. 설치 절차는 다음과 같다.
mkdir /opt/gradle
unzip -d /opt/gradle ./ /gradle-5.4-bin.zip
ls /opt/gradle/gradle-5.4
#
vi ~/.bashrc
# ~/.bashrc
export PATH=$PATH:/opt/gradle/gradle-5.4/bin
#
source ~/.bashrc
# gradle
gradle -v
2. Elasticsearch가 컴파일하고 실행할 때 요구하는 JDK 버전은 다르다. V6.2 버전을 예로 들면 Runtime은 최저 JDK8, Compile은 최저 JDK9을 요구한다.다른 버전의 Elasticsearch는 필요한 JDK가 실행되고 컴파일된 버전을 어떻게 결정해야 합니까?다음과 같이 Elasticsearch의 소스 코드에서 찾을 수 있습니다.
/*
* Elasticsearch <= v6.3
*/
// :buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8
static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_9
/*
* Elasticsearch >= v6.4
*/
// :buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
// :
//buildSrc/src/main/resources/minimumCompilerVersion
//buildSrc/src/main/resources/minimumRuntimeVersion
JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(
BuildPlugin.class.getClassLoader().getResourceAsStream("minimumRuntimeVersion").text.trim()
)
JavaVersion minimumCompilerVersion = JavaVersion.toVersion(
BuildPlugin.class.getClassLoader().getResourceAsStream("minimumCompilerVersion").text.trim()
)
3. 터미널에서 구축 작업을 실행하기 전에 터미널을bash로 바꾸는 것을 권장합니다. 그렇지 않으면 문제가 있을 수 있습니다.
구축 시작
구체적인 단계는 다음과 같다.
#
git clone https://github.com/elastic/elasticsearch.git
#
cd elasticsearch
#
git checkout 6.2
#
./gradlew assemble
아래의 출력을 보면 구축이 성공했다는 것을 나타낸다.
BUILD SUCCESSFUL in 10m 15s
505 actionable tasks: 505 executed
테스트
구축에 성공하면 다음과 같이 Elasticsearch를 시작할 수 있습니다.
#
./gradlew run
시작 성공 후 브라우저 열기
127.0.0.1:9200
는 다음과 같이 표시됩니다.{
"name" : "node-0",
"cluster_name" : "distribution_run",
"cluster_uuid" : "E3qa7TIkTTGNP32WizSyXg",
"version" : {
"number" : "6.2.5",
"build_hash" : "e38fe8a",
"build_date" : "2019-04-25T01:27:03.655047Z",
"build_snapshot" : true,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.