我在本地运行的弹性搜索很好。好吧,是时候把它放在我的服务器上了。每当我尝试在服务器上运行时,我都会得到#34;您必须设置ES_CLASSPATH var"。据我所知,ES_CLASSPATH已设置完毕。谷歌显示了一些结果,但没有任何对我有用。
当我尝试启动elasticsearch时,有什么可能出错的想法?我使用的是5.0.0版,但尝试使用以前的版本会产生同样的错误。
答案 0 :(得分:4)
我能够轻松地重现这个问题。我尝试从ES_HOME / bin目录中删除elasticsearch.in.sh脚本,然后尝试从ES_HOME / bin目录运行./elasticsearch。我知道了,
You must set the ES_CLASSPATH var
elasticsearch.in.sh文件包含此类路径设置。因此,请确保您在ES_HOME / bin目录中有 elasticsearch.in.sh 文件。
根据./elasticsearch脚本,它会在以下所有位置查找此elasticsearch.in.sh文件。所以把它放在以下任何一个地方都没关系。
/usr/share/elasticsearch/elasticsearch.in.sh
/usr/local/share/elasticsearch/elasticsearch.in.sh
/opt/elasticsearch/elasticsearch.in.sh
~/.elasticsearch.in.sh
"$ES_HOME/bin/elasticsearch.in.sh"
请注意,ES_HOME是elasticsearch的基本安装目录。
elasticsearch.in.sh文件的内容供您参考。
#!/bin/bash
# check in case a user was using this mechanism
if [ "x$ES_CLASSPATH" != "x" ]; then
cat >&2 << EOF
Error: Don't modify the classpath with ES_CLASSPATH. Best is to add
additional elements via the plugin mechanism, or if code must really be
added to the main classpath, add jars to lib/ (unsupported).
EOF
exit 1
fi
ES_CLASSPATH="$ES_HOME/lib/elasticsearch-5.0.0.jar:$ES_HOME/lib/*"
请注意,它设置了ES_CLASSPATH。