🤯

elasticsearchをビルドしてIntellijからデバッグできるようにする

2024/11/17に公開

概要

  1. elasticsearchをcloneする
  2. elasticsearchをbuildする
  3. elasticsearchをdebugする

実行環境

  • elasticsearch 8.16.0
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ java --version
openjdk 21.0.5 2024-10-15
OpenJDK Runtime Environment (build 21.0.5+11-Ubuntu-1ubuntu122.04)
OpenJDK 64-Bit Server VM (build 21.0.5+11-Ubuntu-1ubuntu122.04, mixed mode, sharing)
$ docker compose version
Docker Compose version v2.29.7-desktop.1

$ docker --version
Docker version 27.3.1, build ce12230

1.elasticsearchをcloneする

インストールしたいディレクトリ階層でこれを実行するだけでOK

git clone git@github.com:elastic/elasticsearch.git

2.elasticsearchをbuildする

今回はIntellijにcloneしたディレクトリをそのままインポートして自動的にbuildしてもらうことにする。erasticsearch配下にある以下のファイルを適宜参考に進めていく。

  • README.asciidoc
  • COTRIBUTING.md
  • TESTING.asciidoc

①対応するJDKをインストールする

詳細はCONTRIBUTING.mdを参照のこと。インストールは以下の手順でOK。
https://zenn.dev/hamutarosan_dev/articles/c55337c51e8cd9
仮にバージョンが違っていても./gradlew run時のエラーログに出力されるのでそれに従って対応しているバージョンに入れ替えればOK。

②Dockerをインストールする

詳細はREADME.asciidocを参照のこと。インストールは以下の手順でOK。
https://zenn.dev/hamutarosan_dev/articles/22ec4c4716c491
なお、KVMが存在しないためDocker Desktopはインストールできていないが、Dockerは問題なく落とせているようなので取り敢えずこれで進める(結果は問題なくdebugまでできた)

③ Intellijにインポートする

ここらへんを参考にただインポートするだけでした。勝手にbuildまでやってくれた。
https://qiita.com/daixque/items/9b7632ebfa9f7712852e#IntelliJにインポートしてデバッグ実行
https://ryook.hatenablog.jp/entry/es-intellij-debug

3.elasticsearchをdebugする

ここは2-③のURLを参考に進めていく。具体的な手順は以下。

  • IntelliJ側で「Debug Elasticsearch」を選択してdebugを起動する。接続先ポートは5007を設定(詳細はTESTING.asciidocに記載があるので参考にする)
  • リモートデバックオブションを指定して以下コマンド(例のごとくTESTING.asciidocに記載がある)を実行。初回は結構時間がかかる。
./gradlew run --debug-jvm
  • Intellijのdebugコンソールに以下が出力される → OK
Connected to the target VM, address: 'localhost:5007', transport: 'socket'
  • RestRequestがよく使われるクラスだそうなので適当なメソッドにブレークポイントを打ってcurlを実行するとちゃんと処理が止まる → OK
curl -u elastic:password localhost:9200

まとめ

elasticsearchをデバッグ実行するにあたっての手順をまとめた。
ここまでやっておいて肝心のelasticsearchのことを何も知らないため「ElasticStack実践入門」を読むことにします。

Discussion