elasticsearch启动不了,elasticsearch 启动
Elasticsearch 重启
1. 查看进程 ps -ef | grep elastic
2. 杀死进程 kill -9 PID
3. elasticsearch 要求非root用户启动
①创建非root用户 adduser wldai
②设置用户密码 passwd wldai
③赋予用户权限 chown -R wldai /opt/elasticsearch.xxx/
④切换用户 su wldai
4. 切换 elasticsearch.xxx/bin 目录下,执行 ./elasticsearch -d
5. 查看端口是否开启成功 ss -tanl
6. 没有启动相应端口,切换 elasticsearch.xxx/logs 目录下查看日志 more elasticsearch.log
7. 重启并检查端口
8. 开启端口访问 /sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT
Windows上Elasticsearch启动报警告解决方案
我在自己电脑Win10上装了个Elasticsearch7.8,可能因为版本过高,导致es对jdk要求也很高,而我电脑上jdk也只是1.8版本的,然后启动的时候就报下面的警告:
Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correct
? ergonomic settings due to a JDK issue (JDK-8074459). Please use a newer
? version of Java.
Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459.
? Please use a newer version of Java or set MaxDirectMemorySize explicitly.
这虽然只是个警告,一般情况下访问es也不会有什么问题,但是我用多线程频繁访问的时候就会报“远程主机强迫关闭了一个连接”错误。解决方式就是在配置文件中让它用自己的jdk,而不是用我们配好的环境变量的jdk。在bin/elasticsearch-env.bat文件中将if "%JAVA_HOME%" == "" (和它后面的else整个内容注释掉(es的配置中在每行的前面加rem,我也很奇怪用这么奇怪的注释方式),然后将if中的内容提取出来就好了。下面是我的配置。
set SCRIPT=%0
rem determine Elasticsearch home; to do this, we strip from the path until we
rem find bin, and then strip bin (there is an assumption here that there is no
rem nested directory under bin also named bin)
for %%I in (%SCRIPT%) do set ES_HOME=%%~dpI
:es_home_loop
for %%I in ("%ES_HOME:~1,-1%") do set DIRNAME=%%~nxI
if not "%DIRNAME%" == "bin" (
? for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI
? goto es_home_loop
)
for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI
rem now set the classpath
set ES_CLASSPATH=!ES_HOME!\lib\*
set HOSTNAME=%COMPUTERNAME%
if not defined ES_PATH_CONF (
? set ES_PATH_CONF=!ES_HOME!\config
)
rem now make ES_PATH_CONF absolute
for %%I in ("%ES_PATH_CONF%..") do set ES_PATH_CONF=%%~dpfI
set ES_DISTRIBUTION_FLAVOR=default
set ES_DISTRIBUTION_TYPE=zip
set ES_BUNDLED_JDK=true
cd /d "%ES_HOME%"
rem now set the path to java, pass "nojava" arg to skip setting JAVA_HOME and JAVA
if "%1" == "nojava" (
? exit /b
)
rem compariing to empty string makes this equivalent to bash -v check on env var
rem and allows to effectively force use of the bundled jdk when launching ES
rem by setting JAVA_HOME=
rem if "%JAVA_HOME%" == "" (
rem? set JAVA="%ES_HOME%\jdk\bin\java.exe"
rem? set JAVA_HOME="%ES_HOME%\jdk"
rem? set JAVA_TYPE=bundled jdk
rem ) else (
rem? set JAVA="%JAVA_HOME%\bin\java.exe"
rem? set JAVA_TYPE=JAVA_HOME
rem )
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
if not exist !JAVA! (
? echo "could not find java in !JAVA_TYPE! at !JAVA!" 2
? exit /b 1
)
rem do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)
if defined JAVA_TOOL_OPTIONS (
? echo warning: ignoring JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%
? set JAVA_TOOL_OPTIONS=
)
rem JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we
rem warn them that we are not observing the value of %JAVA_OPTS%
if defined JAVA_OPTS (
? (echo|set /p=warning: ignoring JAVA_OPTS=%JAVA_OPTS%; )
? echo pass JVM parameters via ES_JAVA_OPTS
)
rem check the Java version
%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1
如果是linux上也报这种警告,也在类似的配置文件中作相似的修改,我还没有部署到linux上,就暂时不此问题的解决方案,需要的朋友可以自己试试。
Elasticsearch启动及问题解决
配置JDK环境变量
在文件最后添加:
写好后按esc进入底部命令模式,输入:wq保存并退出
使配置文件生效
命令:
如果提示shasum命令找不到就试试yum install perl-Digest-SHA 我运行后就好使了
中途提示 选y就好
启动命令:
访问浏览器loalhost:9200
按照上面的步骤安装、访问浏览器9200端口,很多时候是访问不了,这时候需要查看es的日志。
注:出于安全考虑,elasticsearch默认不允许以root账号运行。故需要创建一个用户
解决办法:
创建用户,切换到创建的用户,再运行。
注:系统没有创建过普通用户,需要使用adduser命令先创建普通用户,再切换到普通用户,在重启es前需要使用kill把启动的进程杀掉。
这是切换自己创建的用户后运行时,因为不是root,所以文件权限不够。
解决办法:
先切换到root用户登录,然后修改配置文件:
配置文件中添加以下内容: (注意带*)
记得修改完,先切换到自己创建的用户,再运行elasticsearch
解决办法:
先切换到root用户下,然后执行修改配置文件
( 没有这个文件的话:root用户下vim会自动创建一个新的;自己创建的用户下,不额外配置的话,vim没有权限创建 )
所以说,先切换到root用户下
文件中添加以下内容:
然后执行命令:
记得修改完,先切换到自己创建的用户,再运行elasticsearch
先切换到root用户下,然后执行修改配置文件
修改文件中内容:
2019-08-22 03:16:26,465 main ERROR RollingFileManager (/home/leyou/elasticsearch/logs/elasticsearch.log) java.io.FileNotFoundException: /home/leyou/elasticsearch/logs/elasticsearch.log (权限不够) java.io.FileNotFoundException: /home/leyou/elasticsearch/logs/elasticsearch.log (权限不够)
解决办法:
切换到root用户下,再cd 到 elasticsearch安装目录下,进行用户授权
2.6.1、本地 curl localhost:9200 成功访问
其它机器通过ip无法访问
解决办法:
开放防火墙9200端口
2.6.2、bootstrap启动 报错,关键字 secComp
secComp,而elasticsearch5.2.0以上的版本默认bootstrap。system_call_filter为true进行检测,所以导致检测失败,失败后会导致es不能启动。
文件中添加以下内容
第一步:通过命令:ps -ef|grep elasticsearch
第二步:通过命令: kill -9 进程号 关闭此进程。我的进程号为2912
第三步:重新启动es。命令:./elasticsearch -d
参考文档: ;
参考文档:
Seafile7专业版无法搜索文件,Internal Server Error,ElasticSearch无法启动。
????专业版 7.0 中 Elasticsearch 更新到了 5.6 版。Elasticsearch 5.6 需要 Java 8 环境,并且为了安全起见,不能以 root 用户运行,你需要更改启动 Seafile 的用户,并且更新 Java 版本。
? ? ? ? 建议组名和用户名都为“Seafile”
? ? ? ? 修改完记得保存并重启seafie和seahub
? ? 缓存问题,删除所有临时文件,重启seafile和seahub即可。