一、Elasticsearch下载
官网网站:https://www.elastic.co/cn/downloads/elasticsearch
本文采用v7.13.2版本
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.2-linux-x86_64.tar.gz
二、Elasticsearch安装与配置
1.解压并移到指定目录
tar -zxvf elasticsearch-7.13.2-linux-x86_64.tar.gz
mv elasticsearch-7.13.2 /usr/local
2.修改配置文件
cd /usr/local/elasticsearch-7.13.2/config
vim elasticsearch.yml
添加如下的配置信息,注意第五项是初始化节点的node name
# 启用该物理机器所有网卡网络访问
network.host: 0.0.0.0
# 服务端口
http.port: 9200
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名
http.cors.allow-origin: "*"
# 节点名称
node.name: node-1
# 初始化节点的名称
cluster.initial_master_nodes: ["node-1"]
3.启动elasticsearch服务,默认不允许root用户启动,新增用户
#新增用户
useradd elkadmin
#赋予用户权限
chown -R elkadmin. /usr/local/elasticsearch-7.13.2
#切换到elkadmin用户下
su elkadmin
# 启动es
sh /usr/local/elasticsearch-7.13.2/bin/elasticsearch -d
此时会报错
错误1:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
修改配置
vim /etc/security/limits.conf
添加如下配置,保存退出
* soft nofile 65536
* hard nofile 65536
重新登录后生效,可以使用下面2个命令查看当前数量
ulimit -Hn
ulimit -Sn
错误2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
使用root用户修改配置
vim /etc/sysctl.conf
添加 vm.max_map_count=262144,保存退出
生效配置
sysctl -p
配置结束后,再次启动es,成功!
查看es日志
cd /usr/local/elasticsearch-7.13.2/logs
tailf elasticsearch.log
使用curl命令与es交互
curl http://10.27.3.20:9200
默认的es中没有安装中文分词器,可手安装中文分词插件IK
ik插件地址:https://github.com/medcl/elasticsearch-analysis-ik
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.2/elasticsearch-analysis-ik-7.13.2.zip
到es的plugins路径下新建ik,解压完成后重启es
cd /usr/local/elasticsearch-7.13.2/plugins
mkdir ik
mv /root/soft/elasticsearch-analysis-ik-7.13.2.zip /usr/local/elasticsearch-7.13.2/plugins/ik
unzip elasticsearch-analysis-ik-7.13.2.zip
测试ik中文分词器
curl -X GET -H "Content-Type: application/json" "http://localhost:9200/_analyze?pretty=true" -d'{"text":"中华五千年华夏"}';
三、配置以systemctl方式管理Elasticsearch
新增service文件
vim /usr/lib/systemd/system/elasticsearch.service
文件中加入以下内容
[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=forking
# 指定用户
User=elkadmin
# 指定es所在路径
ExecStart=/usr/local/elasticsearch-7.13.2/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
DefaultLimitNOFILE=100000
DefaultLimitNPROC=65535
[Install]
WantedBy=multi-user.target
加载配置信息
systemctl daemon-reload
设置开机启动
systemctl enable elasticsearch.service
相关命令
# 查看服务状态
systemctl status elasticsearch.service
# 启动服务
systemctl start elasticsearch.service
# 重启服务
systemctl restart elasticsearch.service
# 停止服务
systemctl stop elasticsearch.service
# 禁止开机启动
systemctl disable elasticsearch.service
# 启用开机启动
systemctl enable elasticsearch.service