MacのOSをVentureにアップデートするとElasticSearchが動かなくなる問題の解決策


いつものようにelasticsearchを起動しようとしたら、`could not find java in bundled JDK at /opt/homebrew/Cellar/elasticsearch-full/7.17.4/libexec/jdk.app/Contents/Home/bin/java`とか
`Exception in thread "main" java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release at java.base/java.lang.System.setSecurityManager(System.java:425) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82)`とか怒られてびっくりしちゃったあなたへ。


# 概要
MacのOSをVentureに上げると、以下のようにElasticSearchが動かなくなる問題があるようです。


https://github.com/elastic/elasticsearch/issues/91159

結論からいうと、以下の２つのコメントを参考に解決できました。

https://github.com/elastic/elasticsearch/issues/91159#issuecomment-1301973028


https://github.com/elastic/elasticsearch/issues/91159#issuecomment-1302100767


いや、正直に告白すると、ESの再インストールと

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/brew.html

Macの標準のJavaのアンインストールと、

https://www.java.com/ja/download/help/mac_uninstall_java.html

Java11の再インストールと、

https://qiita.com/ponsuke0531/items/9be8dee67a91c6c78d4f

openjdk11のインストールとかもやりました。

https://stackoverflow.com/questions/71059252/mac-the-operation-couldn-t-be-completed-unable-to-locate-a-java-runtime-that-su

疲れました。

# 解決手順
ほとんどIssueの翻訳です。

### 1, JAVAのPATHをコピー

```
/usr/libexec/java_home
# PATHをコピーしておく
>> /usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
```

### 2 `~/homebrew.mxcl.elasticsearch-full.plist` を編集する

`could not find java in bundled JDK at` に続く、`elasticsearch-full/バージョン情報` 以下の　`homebrew.mxcl.elasticsearch-full.plist ` を編集する。

```
vim /opt/homebrew/Cellar/elasticsearch-full/7.17.4/homebrew.mxcl.elasticsearch-full.plist
```

ファイルに以下を追記。

```
<key>EnvironmentVariables</key>
    <dict>
      <key>ES_JAVA_HOME</key>
      <string>「コピーしたJAVAのPATH」</string>
    </dict>
```

### 3
```
vim /opt/homebrew/etc/elasticsearch/elasticsearch.yml
```

ファイルの一番下に以下を追記。

```
xpack.ml.enabled: false
```

### 4

```
export ES_JAVA_HOME=$(/usr/libexec/java_home)
```

### 5, source ~/.bash_profileとかsource ~/.zshrcとか

### 6, ESの再起動

```
# プロセスをkill
ps aux | grep 'elastic' | grep -v grep | awk '{ print "kill -9", $2 }' | sh
# ES起動
elasticsearch
```

動いたならおめでとう。
動かなかったら自分と同じように一旦ESの再インストールから始めてもいいかもしれませんね。
Fingers Crossed!!

OSのアップグレードのせいでESが動かなくなるなんて正直思いもしなかったので結構焦りました。
今回は「何もしてないのに壊れた」と言っても許されるはず。

それにしても今回は英語が読めて助かったなぁ〜〜〜！！！！
効率的に語彙が覚えられるDiQtってアプリ、やっぱりすごいなぁ〜〜〜〜！！！！（広告）

https://www.diqt.net/ja




# `could not find java in bundled JDK at /usr/local/Cellar/elasticsearch-full/7.17.4/libexec/jdk.app/Contents/Home/bin/java` の場合
なんかしばらくしたらまた動かなくなったのだが、その際は `could not find java in bundled JDK at /usr/local/Cellar/elasticsearch-full/7.17.4/libexec/jdk.app/Contents/Home/bin/java` ということだった。

 `/opt/homebrew/Cellar` ではなく、  `/usr/local/Cellar` にhomebrewが入っている場合、以下をすると動いた。

```
/usr/libexec/java_home
# PATHをコピーしておく
>> /usr/local/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home
```

`could not find java in bundled JDK at` に続く、`elasticsearch-full/バージョン情報` 以下の　`homebrew.mxcl.elasticsearch-full.plist ` を編集する。

```
vim /usr/local/Cellar/elasticsearch-full/7.17.4/homebrew.mxcl.elasticsearch-full.plist
```

ファイルに以下を追記。

```
<key>EnvironmentVariables</key>
    <dict>
      <key>ES_JAVA_HOME</key>
      <string>「コピーしたJAVAのPATH」</string>
    </dict>
```

最後におまじない。

```
 export ES_JAVA_HOME=$(/usr/libexec/java_home)
 source ~/.bash_profile
```

参考：

https://github.com/elastic/elasticsearch/issues/91159#issuecomment-1370864051

https://github.com/elastic/elasticsearch/issues/91159#issuecomment-1438547376

まぁ他にも色々したから自信はないけど備忘録。