Apple MacBook Pro M1, 32 GB, Ventura 13.2
Documentation based on comments in this Github Elasticsearch issue.
Install Homebrew
Install Homebrew if not yet installed.
Verify Homebrew is a recent version:
$ brew --version
Homebrew 3.6.21
Homebrew/homebrew-core (git revision c26f1c8714c; last commit 2023-02-08)
Homebrew/homebrew-cask (git revision b69d2bf867; last commit 2023-02-08)brew tap elastic/tap
brew install elastic/tap/elasticsearch-full
brew install openjdk
Symlink OpenJDK so the system Java wrappers can find it. This information is also displayed as a Homebrew “caveat” after installing OpenJDK.
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
Edit Elasticsearch homebrew.mxcl.elasticsearch-full.plist to use the OpenJDK:
code /opt/homebrew/Cellar/elasticsearch-full/7.17.4/homebrew.mxcl.elasticsearch-full.plist
Find the full path to OpenJDK:
/usr/libexec/java_home
Insert the following before the last closing </dict>:
<key>EnvironmentVariables</key>
<dict>
<key>ES_JAVA_HOME</key>
<string>insert the full path from /usr/libexec/java_home here</string>
</dict>The entire homebrew.mxcl.elasticsearch-full.plist should look like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>homebrew.mxcl.elasticsearch-full</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/opt/elasticsearch-full/bin/elasticsearch</string>
</array>
<key>EnvironmentVariables</key>
<dict>
</dict>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/opt/homebrew/var</string>
<key>StandardErrorPath</key>
<string>/opt/homebrew/var/log/elasticsearch.log</string>
<key>StandardOutPath</key>
<string>/opt/homebrew/var/log/elasticsearch.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>ES_JAVA_HOME</key>
<string>/opt/homebrew/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home</string>
</dict>
</dict>
</plist>echo "\nxpack.ml.enabled: false\n" >> /opt/homebrew/etc/elasticsearch/elasticsearch.yml
Add the ES_JAVA_HOME environment variable by setting to ~/.zshrc:
echo "\nexport ES_JAVA_HOME=$(/usr/libexec/java_home)\n" >> ~/.zshrc
In a new shell, launch Elasticsearch:
elasticsearch
In a new shell, curl the local Elasticsearch URL:
$ curl -s http://localhost:9200
Example output:
{
"name" : "my-machine",
"cluster_name" : "elasticsearch_foo_bar",
"cluster_uuid" : "some-uuid",
"version" : {
"number" : "7.17.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "build-hash",
"build_date" : "2022-05-18T18:04:20.964345128Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
This worked for me on M1 MBP, Sequoia 15.7 beta.
ES_JAVA_HOMEdefinition into the/opt/homebrew/Cellar/elasticsearch-full/7.17.4/homebrew.mxcl.elasticsearch-full.plistfile.export ES_JAVA_HOME=$(/usr/libexec/java_home)to my shell profile.openjdk@17(and uninstall the defaultopenjdkone, which is 24 right now). This is because 17 still has Security Manager, and otherwise you get errors about it being no longer supported. source If you do this, make sure you undo/redo the symlinks in the brew output.brew install elasticvue-- because it looks usefulIf I start running into problems with 7.17.4, there are instructions on getting the "fixed" 7.17.14 here so I'll try that next. At this point I'm just glad it's working ;-)