Linux 安装 elasticSearch(单点部署)

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