官网下载地址(版本是 7.8.0)
:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0
将下载后的安装包解压就行
启动,进入ES文件夹的bin
目录,找到启动文件,双击执行就行
启动成功截图
可能出现闪闪退
双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/jvm.options
配置文件
#设置JVM初始内存为1G。此值可以设置与-Xmx,相同,以避免每次垃圾回收完成后JVM重新分配内存
# Xms represents the initial size of total heap space
#设置JVM最大可用内存为1G
# Xmxrepresents the maximum size of total heap space
-Xms512m
-Xmx512m
一、官网下载
版本:7.8.1
官网下载地址
:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz
二、将下载后的压缩包上传到Linux上,比如这里我上传到了目录 /opt/server
,这个server目录是自己建的,如下图,解压安装包并指定安装路径:tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz -C /opt/server,然后进行重命名:mv elasticsearch-7.8.1 es7.8.1
解压 : tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz -C /opt/server
重命名 :mv elasticsearch-7.8.1 es7.8.1
简而言之: ES文件夹里自己携带了 JDK ,但是如果我们的 Linux 下安装了 JDK ,ES 就不会用自己自带的 JDK ,反而会使用我们 Linux 安装的 JDK ,这个时候如果两个jdk的版本不一致,就会造成jdk不能正常运行,报错
注意
:如果Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错
解决方法
进入ES文件夹的bin目录
cd /opt/server/es7.8.1/bin
修改elasticsearch配置
vim ./elasticsearch
############## 添加配置解决jdk版本问题 ##############
# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=/usr/local/elasticsearch-7.13.2/jdk
export PATH=$JAVA_HOME/bin:$PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/usr/local/elasticsearch-7.13.2/jdk/bin/java"
else
JAVA=`which java`
fi
由于elasticsearch 默认分配 jvm空间大小为2g
,如果服务器内存不大就会报错,所以我们需要修改 jvm空间,如果Linux服务器本来配置就很高,可以不用修改。
错误代码
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c6a00000, 962592768, 0) failed; error='Not enough space' (errno=12)
at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:13
解决方案
进入ES文件夹的config目录开始配置,编辑 jvm.options
vim /opt/server/es7.8.1/config/jvm.options
修改
默认配置如下:
-Xms2g
-Xmx2g
默认的配置占用内存太多了,调小一些:
-Xms256m
-Xmx256m
修改数据和日志目录
新建data
文件夹并打开data
文件夹再新建两个文件夹:es-data
,es-log
然后在 elasticsearch.yml
文件中配置,如下
执行命令修改elasticsearch.yml
文件内容
vim /opt/server/es7.8.1/config/elasticsearch.yml
修改数据与日志存储路径
# 数据目录位置
path.data: /opt/server/es7.8.1/data/es-data
# 日志目录位置
path.logs: /opt/server/es7.8.1/data/es-log
修改绑定的ip允许远程访问
#默认只允许本机访问,修改为0.0.0.0后则可以远程访问
# 绑定到0.0.0.0,允许任何ip来访问
network.host: 0.0.0.0
初始化节点名称
cluster.name: elasticsearch #es服务集群名
node.name: es-node0 #节点名称
#初始的候选 master 节点列表。初始主节点应通过其 node.name 标识,默认为其主机名。
#确保 cluster.initial_master_nodes 中的值与 node.name 完全匹配
cluster.initial_master_nodes: ["es-node0"]
修改端口号,默认是9200(有需要的话可以改,就是修改我们访问的端口号)
http.port: 19200
创建用户
因为安全问题, Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户。
useradd es #添加用户 es
passwd es # 为 es 用户设置密码,密码输入的时候看不见,我设置的密码是 es123456
userdel -r es #如果错了,可以删除再加
chown -R es:es /opt/server/es7.8.1 #为这个文件夹赋予所有者 es
切换到es
用户
su es
进入bin
目录
cd /opt/server/es7.8.1/bin
启动elasticsearch
./elasticsearch
报错如下
错误代码,如上图
Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /opt/es/config/elasticsearch.keystore
Likely root cause:
java.nio.file.AccessDeniedException:/opt/es/config/elasticsearch.keystore
解决方法
切换到root
用户,进入这个文件的目录下,ll
查看权限,发现这个文件只有 root
用户才有权限,我们创建的 es
用户并没有权限,所以报错
我们将这个文件进行删除,下次启动es时会自动创建
rm -rf elasticsearch.keystore
删除成功后再次切换回es
的用户并再次启动
./elasticsearch
再次出现问题
原因:elasticsearch用户拥有的内存权限太小,至少需要262144,解决办法:
错误代码
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/server/es7.8.1/data/es-log/elasticsearch.log
解决方案
在 /etc/sysctl.conf
文件最后添加如下内容,即可永久修改
切换到root
用户
执行命令
su root
执行命令
vim /etc/sysctl.conf
添加如下内容
vm.max_map_count=262144
保存退出,刷新配置文件
sysctl -p
再切换es
用户,再次启动
su es
启动成功截图如下
测试访问
如果访问不了,可以看一下服务器的安全组是否打开,还有将Linux的防火墙的端口开放
firewall-cmd --list-ports # 只看Linux 防火墙开放端口信息
# 开启端口
#开端口命令:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
#重启防火墙:
systemctl restart firewalld.service
如上操作就可以了
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决方案
切换到root用户,执行命令
vi /etc/security/limits.conf
添加如下内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
然后重启linux
前台运行,Ctrl + C 则程序终止
也可以以后台方式启动
./elasticsearch -d # -d 表示后台启动
关闭ES服务
ps -ef|grep ela #查看 es的进程
kill -9 pid #强制杀死进程
ES7.x以后的版本将安全认证功能免费开放了,并将X-pack插件集成了到了开源的ElasticSearch版本中。下面将介绍如何利用X-pack给ElasticSearch相关组件设置用户名和密码。
编辑配置文件
vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml
在 elasticsearch.yml
末尾,加入以下内容:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
编辑内容后重启Elasticsearch服务(必须操作)
设置用户名和密码,输入如下
/opt/server/es7.8.1/bin/elasticsearch-setup-passwords interactive
这里依次设置elastic、kibana、logstash等的访问密码,es12356
设置了访问密码,再次访问ES时,需要输入密码
# 查看安装的软件
dpkg -l | grep elastic
#查看安装关联
dpkg -L elasticsearch
#移除安装软件
dpkg -P elasticsearch
#继续查看未卸载的目录和文件
find ./ elasticsearch | grep elasticsearc
#移除目录和文件具体参考自己的环境
rm -r /var/lib/elasticsearch
rm /var/lib/dpkg/info/elasticsearch.*
rm /etc/default/elasticsearch
rm /etc/default/elasticsearch
rm /etc/init.d/elasticsearch
#在此查看是否有关联的目录和文件
find ./ elasticsearch | grep elasticsearch