一、ES安装
1、windows安装2、Linux安装
2.1、 安装2.2、ES与JDK的强依赖问题2.3、解决内存不足问题2.4、修改ES核心配置信息2.5、启动2.6、Exception in thread “main“ org.elasticsearch.bootstrap.BootstrapException: .....2.7、vm.max_map_count [65530] is too low问题2.8、可能遇到的max file descriptors [4096]问题2.8、服务终止2.9、为Elasticsearch设置登录密码(看自己需求)2.10、卸载
一、ES安装 1、windows安装官网下载地址(版本是 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 -Xmx512m2、Linux安装 2.1、 安装
一、官网下载
版本: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 -Xmx256m2.4、修改ES核心配置信息
修改数据和日志目录
新建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
2.6、Exception in thread “main“ org.elasticsearch.bootstrap.BootstrapException: …报错如下
错误代码,如上图
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
2.7、vm.max_map_count [65530] is too low问题再次出现问题
原因: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
如上操作就可以了
2.8、可能遇到的max file descriptors [4096]问题[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
2.8、服务终止前台运行,Ctrl + C 则程序终止
也可以以后台方式启动
./elasticsearch -d # -d 表示后台启动
关闭ES服务
ps -ef|grep ela #查看 es的进程
kill -9 pid #强制杀死进程2.9、为Elasticsearch设置登录密码(看自己需求)
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时,需要输入密码
2.10、卸载# 查看安装的软件 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



