Apple MacBook Pro M1, Ventura 13.2
Documentation based on comments in this Github Elasticsearch issue.
Enabled terminal in developer tool
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
cd /opt/homebrew/Library/Taps/elastic/homebrew-tap # For M1
git fetch origin pull/144/head:patch-1
git checkout patch-1
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"
}