Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing Elasticsearch on OSX Mavericks

I'm trying to install Elasticsearch 1.1.0 on OSX Mavericks but i got the following errors when i'm trying to start:

:> ./elasticsearch Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:252) at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:236) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32) 

Also when i'm executing the same command with -v arg, i got this error:

:> ./elasticsearch -v Exception in thread "main" java.lang.NoSuchFieldError: LUCENE_36 at org.elasticsearch.Version.<clinit>(Version.java:42) 

Here's my environment:

Java version

>: java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode) 

Instalation path (downloaded .tar.gz archive from elasticsearch download page and extracted here):

/usr/local/elasticsearch-1.1.0 

ENV vars:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home  CLASSPATH=/usr/local/elasticsearch-1.1.0/lib/*.jar:/usr/local/elasticsearch-1.1.0/lib/sigar/*.jar 

UPDATE

i finally make it working, unfortunally not sure how because i tried a lot of changes :). But here's a list of changes i made that can help:

  • i removed jdk and jre and reinstalled on a clean env. http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096855

  • i deleted all the cache dirs.I suppose this can be the 'cause' for that it's working now

~/Library/Caches

/Library/Caches

  • i removed CLASSPATH env var.

  • ES_PATH and ES_HOME env vars are not set either, but i think this is not so important.

Note: now it's working also if i'm installing with brew.

Thanks.

like image 542
Catalin M. Avatar asked Apr 03 '14 22:04

Catalin M.


People also ask

Do I need to install Java for Elasticsearch?

Because Elasticsearch uses Java, we need to ensure the Java Development Kit (JDK) is installed.

How do I update Elasticsearch on my Mac?

1 Answer. Show activity on this post. As far as I know, brew installs in separate directory ( /usr/local/Cellar/ ) and if you have installed yor previous version manually (wothout brew) after brew install elasticsearch you will get a new copy of elasticsearch on your MAC.


2 Answers

You should really consider using brew. It's a great tool that will take care of dependencies, version control and much more.

To install Elasticsearch using brew, simply:

brew update brew install elasticsearch 

Boom! Done.

After that follow Elasticsearch instructions :

  1. To have launchd start Elasticsearch at login:

    ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents 
  2. Then to load Elasticsearch now:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist 

    Or, if you don't want/need launchctl, you can just run:

    elasticsearch 
like image 154
Pierre-Louis Gottfrois Avatar answered Oct 03 '22 12:10

Pierre-Louis Gottfrois


As there are not very good instructions for actually "installing" it onto a Mac:

Short Version:

  1. Install Java (prefer latest supported release)
  2. Set JAVA_HOME environment variable.
  3. Download Elasticsearch version (tar or zip).
  4. Extract Elasticsearch from the downloaded file.
  5. Run bin/elasticsearch from the extracted directory.

Long version:

  1. Download Java

    • Only need the JRE if you will not be writing code on the same machine.

    • I assume that you are getting the latest JDK, which is currently JDK 8 (as you appear to have, and I have installed working on my machine).

  2. Download and extract Elasticsearch and extract it into some directory.

    1. For example: mkdir -p ~/dev/elasticsearch
    2. Optionally move the downloaded file to there:

      mv Downloads/elasticsearch* ~/dev/elasticsearch

    3. Extract the downloaded file:

      cd ~/dev/elasticsearch (if you moved it in step 2)

      • If it's the zip, then unzip elasticsearch-1.1.0.zip (or if you don't want to cd into the directory, then just run unzip elasticsearch-1.1.0.zip -d ~/dev/elasticsearch)

      • If it's the tar, then tar -xvf elasticsearch-1.1.0.tar.gz (or if you don't want to cd into the directory, then just run tar -xvf elasticsearch-1.1.0.tar.gz -C ~/dev/elasticsearch)

    4. Cleanup (if you want) by removing the downloaded file:

      rm elasticsearch-1.1.0.*

  3. Open your .bash_profile file for your bash profile settings:

    vi ~/.bash_profile

  4. In the file, export your environment variable(s)

    export ES_HOME=~/dev/elasticsearch/elasticsearch-1.1.0

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

    export PATH=$ES_HOME/bin:$JAVA_HOME/bin:$PATH

    • Close and re-open your Terminal OR

    • Run source ~/.bash_profile to update the environment variables

  5. Run Elasticsearch:

    elasticsearch

    • The more traditional way to run it is to do pretty much all of the above, but not add $ES_HOME/bin to the PATH. Then, just go to ES_PATH (cd $ES_PATH, then bin/elasticsearch) or run $ES_PATH/bin/elasticsearch.

Note: Do not setup your CLASSPATH without a very good reason. The scripts will do that for you.

like image 31
pickypg Avatar answered Oct 03 '22 13:10

pickypg