1、下载
官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
由于官网下载速度较慢,这里给出百度网盘下载地址
elasticsearch-7.6.2-linux-x86_64.tar.gz 提取码:mffj
2、上传到 /usr/local 目录下
3、解压
cd /usr/local
# 解压
tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
#重命名
mv elasticsearch-7.6.2 elasticsearch
# 删除压缩包
rm -rf elasticsearch-7.6.2-linux-x86_64.tar.gz
4、创建 es 用户
es 规定 root 用户不能启动 es,所以需要创建一个用户来启动 es
# 创建 elasticsearch用户组
groupadd elasticsearch
# 创建 es 用户
useradd es
# 设置 es 用户密码
passwd es
# 将 es 用户添加到 elasticsearch用户组
usermod -a -G elasticsearch es
5、为 es 用户添加 sudo 权限
(1)vim /etc/sudoers
(2)找到 root ALL=(ALL) ALL
(可以通过 /root 然后按 n 找到)
(3)下面一行添加一行:es ALL=(ALL) ALL
6、更改文件夹所属用户以及所属用户组
chown -R es:elasticsearch /usr/local/elasticsearch
7、修改elasticsearch 配置
vi /usr/local/elasticsearch/config/elasticsearch.yml
# 添加以下代码,指定任意host都可以访问,端口号为9200
network.host: 0.0.0.0
http.port: 9200
# 指定 es 模式为单点,不指定则默认是集群模式
discovery.type: "single-node"
8、运行 elaticsearch
# 切换用户
su es
# 进入目录
cd /usr/local/elasticsearch/bin/
# 运行
./elasticsearch
9、报错 Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/config/elasticsearch.keystore
解决:
cd /usr/local/elasticsearch/config/
# 查看所有文件归属
ll -ls
发现 elasticsearch.keystore 文件的归属果然不是es,而是root,给它改过来
su root
# 更改文件权限
chown es:elasticsearch elasticsearch.keystore
# 再 su 回去
su es
10、再次运行 elasticsearch
cd /usr/local/elasticsearch/bin
./elasticsearch
11、报错 ain ERROR RollingFileManager (/usr/local/elasticsearch/logs/elasticsearch_deprecation.log) java.io.FileNotFoundException: /usr/local/elasticsearch/logs/elasticsearch_deprecation.log (Permission denied) java.io.FileNotFoundException: /usr/local/elasticsearch/logs/elasticsearch_deprecation.log (Permission denied)
解决:
还是权限问题,检查下,果然有文件是归属于 root 的,这回彻底点,都给改过来
su root
cd /usr/local
chown -R es:elasticsearch elasticsearch/
12、再次运行 elasticsearch
su es
cd /usr/local/elasticsearch/bin/
./elasticsearch
13、报错
问题:
(1)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
(2)Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch/logs/elasticsearch.log
解决:
(1)解决第一个错误:
错误提示告诉我们,最大虚拟内存区域 vm.max_map_count [65530]太低,至少增加到[262144]。
su root
vi /etc/sysctl.conf
添加 vm.max_map_count = 262144
# 载入sysctl配置文件
sysctl -p
(2)解决第二个错误
错误提示告诉我们: Elasticsearch未正常退出-请检查/usr/local/Elasticsearch/logs/Elasticsearch.log上的日志
这个错误不用管
14、再次运行
su es
cd /usr/local/elasticsearch/bin/
./elasticsearch
这回没有报错,一直再输出日志
15、现在防火墙放行 9200 端口,云服务器安全组同样放行该端口
iptables -I INPUT -ptcp --dport 9200 -j ACCEPT
16、检查输出的信息中,如果没有 error,则基本说明成功了。
在浏览器中输入 ip地址:9200
好了,终于可以运行了。
17、配置使用 systemctl 管理 elasticsearch
就像 systemctl start/stop/restart nginx 一样
su root
cd /etc/init.d
vi elasticsearch
# 添加下面内容
#!/bin/sh
#chkconfig: 2345 80 05
#description: elasticsearch
export JAVA_HOME=/usr/local/java
export JAVA_BIN=/usr/local/java/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
case "$1" in
start)
su es<<!
cd /usr/local/elasticsearch/bin
./elasticsearch -d
!
echo "elasticsearch start"
;;
stop)
es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
kill -9 $es_pid
echo "elasticsearch stopped"
;;
restart)
es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
kill -9 $es_pid
echo "elasticsearch stopped"
su es<<!
cd /usr/local/elasticsearch/bin
./elasticsearch -d
!
echo "elasticsearch restarted"
;;
*)
echo "start|stop|restart"
;;
esac
exit $?
18、修改权限
chmod +x elasticsearch
19、将 elasticsearch 添加到开机自启
chkconfig --add elasticsearch
20、elasticsearch 的管理
systemctl start/stop/restart elasticsearch
注意:使用 systemctl start elasticsearch 时,可能使用 systemctl status elasticsearch 查询状态是开启的,但可能实际上还没有开启完毕,大约30-50秒后,elasticsearch 会开启完毕。
21、安装中文分词插件
su root
systemctl stop elasticsearch.service
cd /usr/local/elasticsearch
# 安装 ik 分词插件
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip