我试图在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)
安装路径(从elasticsearch下载页面下载.tar.gz存档并在此处提取):
/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
我终于让它工作,不幸的是不确定如何,因为我尝试了很多变化:)。但是,我在这里做出的改变列表可以提供帮助:
我删除了jdk和jre并重新安装了一个干净的环境。 http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096855
我删除了所有缓存目录。我想这可能是因为&#39;原因&#39;因为它现在正在工作
〜/库/缓存
/库/缓存
我删除了CLASSPATH env var。
ES_PATH和ES_HOME env vars也没有设置,但我认为这不是那么重要。
注意:如果我使用brew进行安装,现在它也可以正常工作。
感谢。
答案 0 :(得分:214)
您应该考虑使用brew。它是一个很好的工具,可以处理依赖关系,版本控制等等。
要使用brew安装Elasticsearch,只需:
brew update
brew install elasticsearch
轰!完成。
之后按照Elasticsearch说明进行操作:
要让launchd在登录时启动Elasticsearch:
ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents
然后立即加载Elasticsearch:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
或者,如果您不想/需要launchctl,您可以运行:
elasticsearch
答案 1 :(得分:28)
由于没有很好的说明将其“安装”到Mac上:
JAVA_HOME
环境变量。bin/elasticsearch
。下载Java
如果您不在同一台机器上编写代码,则只需要JRE。
我假设您正在获取最新的JDK,目前是JDK 8(正如您所看到的那样,我已安装在我的计算机上工作)。
Download and extract Elasticsearch并将其解压缩到某个目录中。
mkdir -p ~/dev/elasticsearch
可选择将下载的文件移到那里:
mv Downloads/elasticsearch* ~/dev/elasticsearch
提取下载的文件:
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
)
通过删除下载的文件进行清理(如果需要):
rm elasticsearch-1.1.0.*
打开您的bash个人资料设置的.bash_profile
文件:
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
。脚本将为您完成。
答案 2 :(得分:8)
您应该尝试在上次更新时使用brew:
brew update
并安装Cask java:
brew cask install java
之后你可以安装elasticsearch:
brew install elasticsearch
现在使用启动弹性搜索:
brew services start elasticsearch
或者你可以跑:
elasticsearch
答案 3 :(得分:2)
要更新ElasticSearch,只需运行brew upgrade elasticsearch
答案 4 :(得分:1)
更新您的java
brew update
brew cask install java
用自制软件安装它
brew install elasticsearch
答案 5 :(得分: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
如果出错 "elasticsearch.service 的作业因超时而失败。 详情请参阅“systemctl status elasticsearch.service”和“journalctl -xe”。"
解决方案:
1-sudo journalctl -f
2-sudo systemctl enable elasticsearch.service
3-sudo systemctl start elasticsearch