Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mhuggins/61c9e7134166b484167f5a79dff5c087 to your computer and use it in GitHub Desktop.
Save mhuggins/61c9e7134166b484167f5a79dff5c087 to your computer and use it in GitHub Desktop.
Install Elasticsearch 7.x on Apple Macbook Pro M1 Ventura 13.2

Elasticsearch Setup Apple MacBook Pro M1

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)

Install Elasticsearch and OpenJDK

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

Modify Elasticsearch .plist to use the OpenJDK

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>

Modify Elasticsearch YML

echo "\nxpack.ml.enabled: false\n" >> /opt/homebrew/etc/elasticsearch/elasticsearch.yml

Set ES_JAVA_HOME

Add the ES_JAVA_HOME environment variable by setting to ~/.zshrc:

echo "\nexport ES_JAVA_HOME=$(/usr/libexec/java_home)\n" >> ~/.zshrc

Run and Test Elasticsearch

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"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment