在OSX Mavericks上安装Elasticsearch

77

我正在尝试在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参数执行相同的命令时,我遇到了这个错误:

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

安装路径(从 Elasticsearch 下载页面下载 .tar.gz 归档文件并在此处提取):

/usr/local/elasticsearch-1.1.0

环境变量:

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

更新

最终我让它工作了,可惜我不确定是如何做到的,因为我尝试了很多更改 :). 但以下是我所做的更改列表,可以帮助:

~/Library/Caches

/Library/Caches

  • 我移除了CLASSPATH环境变量。

  • ES_PATH和ES_HOME环境变量也未设置,但我认为这并不是很重要。

注意:现在使用brew安装也可以工作。

谢谢。


13
只需使用brewbrew install elasticsearch,若要查看如何在您的Mac上启动服务,请使用 brew info elasticsearch 查看信息。 - Diolor
谢谢,我也尝试过使用brew,但是收到了相同的错误信息。 - Catalin M.
很高兴你让它工作了。通常我建议在Mac上开发时使用brew,但选择权在你手中 :) - Diolor
几乎可以确定是CLASSPATH的问题。 - pickypg
哦,我真的很喜欢Brew。 - Josh Bedo
6个回答

215
你应该考虑使用brew。它是一个很棒的工具,可以管理依赖关系、版本控制等等。
用brew安装Elasticsearch,只需执行以下操作:
brew update
brew install elasticsearch

太好了!完成了。

然后按照 Elasticsearch 的说明进行操作:

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

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

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

    elasticsearch
    

谢谢,我也尝试了使用brew,但是收到了相同的错误信息。 - Catalin M.
2
似乎brew无法处理这个特定的依赖项:ElasticSearch需要Java 7;您需要安装适当的JDK。(更烦人的是,Oracle安装程序坚持要我安装Java 8...没有其他东西意识到它) - Joe
2
对我来说运行得很好。起初显示错误,指出它需要JDK。好消息是它给了我一个命令,我可以复制/粘贴以下载JDK。一旦完成,我就安装elasticsearch。 - ChickenWing24
在Mac上,您可能需要执行以下操作: cd /usr/local/Library git pull origin master http://apple.stackexchange.com/questions/153790/how-to-fix-brew-after-osx-upgrade-to-yosemite - Alexei Blue
错误:config不是--config的已识别选项。 - Basit
显示剩余9条评论

29

由于安装Elasticsearch在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

  3. 如果需要的话,可以通过删除已下载的文件来进行清理:

    rm elasticsearch-1.1.0.*

  • 打开你的 .bash_profile 文件以设置你的 bash 配置:

    vi ~/.bash_profile

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

    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 来更新环境变量

  • 运行 Elasticsearch:

    elasticsearch

    • 更传统的运行方式是几乎完成上述所有步骤,但不要$ES_HOME/bin 添加到 PATH。然后,只需转到 ES_PATH (cd $ES_PATH,然后 bin/elasticsearch) 或运行 $ES_PATH/bin/elasticsearch
  • 注意:没有非常好的理由不要设置你的 CLASSPATH。脚本会为您完成这些操作。


    这个选项是我的首选,因为我在brew和macports之间存在冲突,所以只需像上面那样下载并安装它就轻松得多。 - Dan Smart

    8
    1. You should try to using brew with last update:

      brew update
      
    2. And install Cask java:

      brew cask install java
      
    3. After that you can install elasticsearch:

      brew install elasticsearch
      
    4. And to have launched start elasticsearch now use:

      brew services start elasticsearch
      

      Or you can just run:

      elasticsearch
      

    2
    要更新ElasticSearch,只需运行brew upgrade elasticsearch命令。

    1

    更新您的Java

    brew update
    brew cask install java
    

    使用Homebrew安装

    brew install elasticsearch

    0

    安装 GPG && 安装 Java 或 JDK

    1-Import the repository’s GPG key:
    
    wget -qO - https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
        
    2-this is code repository elasticserach in linux for download
    
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
    
    3-link download elasticsearch
    
      https://www.elastic.co/downloads/elasticsearch
    

    如果出现错误

    "Job for elasticsearch.service failed because a timeout was exceeded. See "systemctl status elasticsearch.service" and "journalctl -xe" for details."

    解决方案:

    1-sudo journalctl -f

    2-sudo systemctl enable elasticsearch.service

    3-sudo systemctl start elasticsearch


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接