在OSX Mavericks上安装Elasticsearch

我试图在OSX Mavericks上安装Elasticsearch 1.1.0,但当我尝试启动时遇到以下错误:

:> ./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) 

另外当我用-v arg执行相同的命令时,我得到这个错误:

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

这是我的环境:

Java版本

 >: 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) 

Instalationpath(从elasticsearch下载页面下载的.tar.gz压缩文件并在此处提取):

 /usr/local/elasticsearch-1.1.0 

ENVvariables:

 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

我终于使它的工作,不幸不知道如何,因为我试了很多改变:)。 但是这里有一个我可以帮助的更改列表:

  • 我删除jdk和jre,并重新安装在一个干净的环境。 http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096855

  • 我删除了所有的caching目录。我想这可能是现在正在工作的“原因”

〜/图书馆/caching

/图书馆/caching

  • 我删除了CLASSPATH env var。

  • ES_PATH和ES_HOME环境variables也没有设置,但我认为这不是那么重要。

注意:如果我正在使用brew进行安装,现在它也在工作。

谢谢。

你应该考虑使用brew 。 这是一个很好的工具,将照顾依赖,版本控制等等。

要使用brew安装Elasticsearch,只需:

 brew update brew install elasticsearch 

繁荣! 完成。

之后按照Elasticsearch的说明:

  1. 要在login时启动Elasticsearch,请执行以下操作:

     ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents 
  2. 然后现在加载Elasticsearch:

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

    或者,如果您不想/需要launchctl,则可以运行:

     elasticsearch 

由于实际“安装”到Mac上并没有很好的说明:

简洁版本:

  1. 安装Java(更喜欢最新的支持版本)
  2. 设置JAVA_HOME环境variables。
  3. 下载Elasticsearch版本(tar或zip)。
  4. 从下载的文件中提取Elasticsearch。
  5. 从提取的目录运行bin/elasticsearch

长版本:

  1. 下载Java

    • 如果你不会在同一台机器上写代码,只需要JRE。

    • 我假设你正在获得最新的JDK,它现在是JDK 8(正如你看起来那样,而且我已经安装在我的机器上了)。

  2. 下载并提取Elasticsearch并将其解压到某个目录。

    1. 例如: mkdir -p ~/dev/elasticsearch
    2. 可select将下载的文件移动到那里:

      mv Downloads/elasticsearch* ~/dev/elasticsearch

    3. 提取下载的文件:

      cd ~/dev/elasticsearch (如果你在步骤2中移动它)

      • 如果是zip,则unzip elasticsearch-1.1.0.zip (或者如果您不想将cd放入目录,那么只需运行unzip elasticsearch-1.1.0.zip -d ~/dev/elasticsearch

      • 如果是tar,那么tar -xvf elasticsearch-1.1.0.tar.gz (或者如果你不想把cd放到目录下,那就运行tar -xvf elasticsearch-1.1.0.tar.gz -C ~/dev/elasticsearch

    4. 清除(如果你想)通过删除下载的文件:

      rm elasticsearch-1.1.0.*

  3. 打开您的bashconfiguration文件设置的.bash_profile文件:

    vi ~/.bash_profile

  4. 在文件中,导出您的环境variables(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

    • closures并重新打开您的terminal

    • 运行source ~/.bash_profile来更新环境variables

  5. 运行Elasticsearch:

    elasticsearch

    • 更传统的运行方式是完成上述所有操作,但不要$ES_HOME/bin添加到PATH 。 然后,转到ES_PATHcd $ES_PATH ,然后bin/elasticsearch $ES_PATH/bin/elasticsearch )或运行$ES_PATH/bin/elasticsearch

注意:不要没有很好的理由设置您的CLASSPATH 。 脚本会为你做。

要更新ElasticSearch,只需运行brew upgrade elasticsearch elasticsearch

  1. 您应该尝试使用上次更新的brew:

     brew update 
  2. 并安装Cask java:

     brew cask install java 
  3. 之后,您可以安装elasticsearch:

     brew install elasticsearch 
  4. 现在启动elasticsearch现在使用:

     brew services start elasticsearch 

    或者你可以运行:

     elasticsearch