在OSX Mavericks上安装Elasticsearch

Cat*_* M. 76 elasticsearch osx-mavericks

我正在尝试在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)
Run Code Online (Sandbox Code Playgroud)

此外,当我用-v arg执行相同的命令时,我收到此错误:

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

这是我的环境:

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)
Run Code Online (Sandbox Code Playgroud)

安装路径(从elasticsearch下载页面下载.tar.gz存档并在此处提取):

/usr/local/elasticsearch-1.1.0
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

UPDATE

我终于让它工作,不幸的是不确定如何,因为我尝试了很多变化:).但是这里有一个我可以提供帮助的变化列表:

〜/图书馆/缓存

/图书馆/缓存

  • 我删除了CLASSPATH env var.

  • ES_PATH和ES_HOME env变量也没有设置,但我认为这不是那么重要.

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

谢谢.

Pie*_*ois 214

你应该考虑使用brew.它是一个很好的工具,可以处理依赖关系,版本控制等等.

要使用brew安装Elasticsearch,只需:

brew update
brew install elasticsearch
Run Code Online (Sandbox Code Playgroud)

繁荣!完成.

之后遵循Elasticsearch说明:

  1. 要在启动时启动Elasticsearch,请登录:

    ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后立即加载Elasticsearch:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
    
    Run Code Online (Sandbox Code Playgroud)

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

    elasticsearch
    
    Run Code Online (Sandbox Code Playgroud)

  • 似乎brew实际上无法处理这种特定的依赖:`ElasticSearch需要Java 7; 你将需要安装一个合适的JDK.(更令人讨厌的是,Oracle安装程序坚持认为我安装了Java 8 ......似乎没有其他任何东西可以实现它) (2认同)
  • 对我来说效果很好.在第一次显示错误时,声明它需要JDK.好的是它给了我一个命令,我可以复制/粘贴下载JDK.一旦完成,我安装elasticsearch. (2认同)

pic*_*ypg 28

由于没有非常好的说明将其"安装"到Mac上:

精简版:

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

长版:

  1. 下载Java

    • 如果您不在同一台机器上编写代码,则只需要JRE.

    • 我假设您正在获得最新的JDK,目前是JDK 8(正如您所看到的那样,我已安装在我的机器上工作).

  2. 下载并解压缩Elasticsearch并将其解压缩到某个目录中.

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

      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. 打开您.bash_profile的bash配置文件设置文件:

    vi ~/.bash_profile

  4. 在文件中,导出您的环境变量

    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

    • 关闭并重新打开终端

    • 运行source ~/.bash_profile以更新环境变量

  5. 运行Elasticsearch:

    elasticsearch

    • 运行它更传统的方式是做几乎所有的方法,但添加$ES_HOME/binPATH.然后,转到ES_PATH(cd $ES_PATH,然后bin/elasticsearch)或运行$ES_PATH/bin/elasticsearch.

注意:CLASSPATH如果没有充分理由,请不要设置.脚本将为您完成.


Ale*_*ndr 8

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

    brew update
    
    Run Code Online (Sandbox Code Playgroud)
  2. 并安装Cask java:

    brew cask install java
    
    Run Code Online (Sandbox Code Playgroud)
  3. 之后,您可以安装elasticsearch:

    brew install elasticsearch
    
    Run Code Online (Sandbox Code Playgroud)
  4. 并且已经启动了弹性搜索现在使用:

    brew services start elasticsearch
    
    Run Code Online (Sandbox Code Playgroud)

    或者你可以运行:

    elasticsearch
    
    Run Code Online (Sandbox Code Playgroud)