# 목표
es code분석이 필요해짐에 따라 es 소스를 intellij에 가져와서 debugging해보자.
# 가이드 문서
es버전 6.6이상에서 7.5이하면 아래 가이드 처럼 하면되는데,
https://www.elastic.co/kr/blog/how-to-debug-elasticsearch-source-code-in-intellij-idea
7.5이상이라면, 아래 풀리퀘를 참고하여 변경된 부분만 원복해서 위와 같은 가이드로 진행하면 된다.
https://github.com/elastic/elasticsearch/pull/48188/files
# 진행
1. es 소스 로컬에 가져오기.
git clone https://github.com/elastic/elasticsearch.git
cd elasticsearch
git checkout --track origin/7.1
2. gradle설치하고, java 설치하고, JAVA_HOME 설정하기.
((gradle 설치))
* mac에서는 gradled은 homebrew로 간단하게 설치가되고
window에서는 gradle홈피가서 zip파일 다운로드받아서 풀고, 환경변수, path만 잡아주면 됨.
((java 설치))
* java는 es7.1기준 12가 필요해서, java12 설치함.
. bash_profile에 java home설정해주고 source ~/.bash_profile
vi ~/.bash_profile
export JAVA_HOME=/library/java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin
* java 설치 파일 url : https://www.oracle.com/java/technologies/javase/jdk12-archive-downloads.html
3. ./gradlew idea
* 일단 terminal에서 es repository를 클론해온 elasticsearch 디렉터리로 가서 ./gradlew idea 를 실행
* 이거 해놓고 intellij에서 import해야 자연스럽게 gradle project import가 편해지는 듯.
4. intellij 열어서, import project > gradle 체크 하고 > 오픈.
5. intellij에 gradle auto enable 이런거 뜨면 ok 체크 해주고,
6. intellij > file > project setting 가서 jdk 12로 변경해주기.
* platform setting > sdk에서 jdk12 설치한 거 홈으로 잡아주고,
* project setting > project에서 project sdk를 jdk12로 잡아주기.
7. 소스 폴더 distribution>build.gradle에서 xpack.security.enabled'를 false로 바꿔줘야 localhost에서 rest api사용가능함.
8. intellij 터미널에서 ./gradlew run --debug-jvm 실행.
* 하다가 뻑나면 ./gradlew clean하고, ./gradlew idea하고 다시 실행.
9. 아래와 같이 run#start가 뜨면 된건데, 이때 intellij>run>attach to process를 누르고 방금 빌드완료한 snapshot넣어주면,
디버깅 준비 완료!!
============-> 98% EXECUTING [33m 6s]
> :distribution:run#start
10. 이제 break point 걸어서, localhost:9200/_cluster/settings 등등 api날려보면서 코드 디버깅 할 수 있음.
'우리는 개발자 > Data Engineering' 카테고리의 다른 글
[Spark] 자주 사용하는 명령어 모음 (업데이트) (0) | 2020.02.26 |
---|---|
[Spark] Scala 프로젝트 구성 및 시작하기 (sbt, g8) (0) | 2020.02.26 |
[kubernetes] mac에 minikube설치하기. (0) | 2020.02.18 |
[elasticsearch] refresh, flush, optimize API. 루씬과의 비교. (0) | 2020.01.27 |
[elasticsearch] nested type, nested type aggregation. (0) | 2020.01.11 |