(一)elasticsearch7.6.0 集群搭建 elasticsearch-head Kibana搭建
(二)elasticsearch7.6.0 使用,常见增删改查功能语句
(三)elasticsearch 7.6.0整合springboot 2.1.4实现模糊查询/精确查询/高亮查询
Elasticsearch安装部署手册
本文分为三部分, 第一部分是本文内容, 主要讲述环境搭建
1 环境配置
主机名 | IP地址 | 操作系统 | ES版本 |
---|---|---|---|
Es1 | 192.168.5.32 | CentOS7 | 7.0.1 |
Es2 | 192.168.5.33 | CentOS7 | 7.0.1 |
Es3 | 192.168.5.34 | CentOS7 | 7.0.1 |
ES下载地址
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz
或者到官网自行下载:
https://www.elastic.co/cn/downloads/elasticsearch
因analysis-ik7.6(当前最新)分词系统对ElasticSearch的版本有要求,所以选择ElasticSearch7.6.0版本进行安装.
2 节点初始配置
所有三个节点都需要根据以下配置内容进行相同的配置。
2.1 节点相互信任(可选)
root用户登陆后执行 ssh-keygen
生成本地秘钥,不需秘钥
生成后,秘钥存储在/root/.ssh 目录下
把生成的公钥传递给其他服务器
ssh-copy-id -i .ssh/id_rsa.pub root@es2
ssh-copy-id -i .ssh/id_rsa.pub root@es3
测试是否可用 ssh es2 ;第一次需要输入密码,以后不需要了就说明成功了
2.2 关闭selinux
编辑/etc/selinux/config 文件,将SELinux
的默认值enforcing
改为 disabled
,下次开机就不会再启动
重新启动后可用命令getenforce
查看当前SELinux状态
状态为Disabled 代表禁用成功
2.3 关闭防火墙
- 永久关闭防火墙
systemctl disable firewalld
- 重新启动系统后查看防火墙状态
systemctl status firewalld
2.4 创建elastic用户
- 创建es用户
用户密码为es
useradd es
passwd es #设置es用户的登录口令为es
2.5 创建数据目录
创建/data目录为数据存储主目录
把此目录所有权赋予es用户
chown -R es:es /data
2.6 修改系统配置
1. 增加 /etc/sysctl.conf 配置,执行 sysctl -p 生效
修改内容为
vm.max_map_count = 655300
vm.swappiness = 1
2. 增加 /etc/security/limits.conf 配置
es soft nofile 65536
es hard nofile 65536
es soft memlock unlimited
es hard memlock unlimited
2.7 配置java环境
由于ElasticSearch与JVM进行了深入绑定,严格要求对应的JVM版本,所以不建议自己安装JVM,可以直接引用es安装路径下的JDK即可(如果服务器部署了其他JAVA应用,请慎重设置!!!
)
1. 设置环境变量(root用户)
vim /etc/profile
export JAVA_HOME= /opt/elasticsearch-7.6.0/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
在文件结尾处添加如下内容
2. 使环境变量生效
source /etc/profile
3. 检查是否生效
Java -version
如果能够正常显示出java的版本号代表成功
建议重新启动系统后以es用户登录后重复检查步骤,确认java环境对es用户生效
3 ElasticSearch安装
把下载的elasticsearch-7.6.0上传至服务器
解压缩文件到/opt目录下
tar -zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz -C /opt
更改目录所有权为es用户
chown -R es:es /opt/elasticsearch-7.6.0/
修改 jvm 参数文件 /opt/elasticsearch/config/jvm.options
主要修改内存占用,虚拟机测试环境可分配4G
修改 /opt/elsaticsearch/config/elasticsearch.yml
cluster.name: test_es
node.name: es1
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock: true
network.host: 192.168.5.32
cluster.initial_master_nodes: ["es1", "es2","es3"]
discovery.zen.ping.unicast.hosts: ["192.168.5.32","192.168.5.33","192.168.5.34"]
gateway.recover_after_nodes: 3
其他两台机器也需要如上安装,在配置中需要更改node.name为本机名称;network.host为本机ip
部署完毕后可进行测试,三台机器都在es用户下启动如下命令
/opt/elasticsearch-7.6.0/bin/elasticsearch
顺序启动三台计算机的服务后,通过本地浏览器访问
http://192.168.5.32:9200/_cat/nodes?pretty
查看节点状态
http://192.168.5.32:9200/_cat/nodes?pretty
查看集群状态
如果能够正常返回,说明安装配置没问题
4 安装分词插件
以es用户登录执行下面操作
确保elasticsearch系统关闭后执行,下载插件并安装:
/opt/elasticsearch-7.6.1/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
三台节点都需要安装这个插件
配置远程扩展字典时,出现 java.net.SocketPermission
拒绝连接,此时需配置 jre 策略
#vim /opt/jre/lib/security/java.policy,在最后一个 “}” 前追加下面一行
permission java.net.SocketPermission "*:*","accept,connect,resolve";
安装完毕后,三台机器分别再次启动es,如果发现启动信息中包含如下信息,则说明分词插件安装成功
5 设置开机启动
三台机器都以root用户身份,创建 /usr/lib/system/system/elasticsearch.service
,内容如下
[Unit]
Description=ElasticSearch
Requires=network.service
After=network.service
[Service]
User=es
Group=es
LimitNOFILE=65536
LimitMEMLOCK=infinity
Environment=JAVA_HOME=/opt/elasticsearch-7.6.0/jdk
ExecStart=/opt/elasticsearch-7.6.0/bin/elasticsearch
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
允许服务启动
systemctl enable elasticsearch.service
然后所有机器都重新启动后,测试集群是否正常即可
6 Elasticsearch-head 部署
6.1 前置
Elasticsearch需要node.js的环境才能运行.
Node.js下载地址: https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
因为下载的是.xz文档,上传到192.168.5.32后需要执行:
xz -d node-v12.16.1-linux-x64.tar.xz
tar xvf node-v12.16.1-linux-x64.tar.xz -C /opt
解压缩到/opt后需要把目录权限给es
配置/etc/profile环境变量新增如下:
export NODE_HOME=/opt/node-v12.16.1-linux-x64
export PATH=$NODE_HOME/bin:$PATH
配置好后,执行命令 source /etc/profile 使上面的配置生效。
然后执行 npm -v
看到如上信息代表node.js配置成功
6.2 下载
Elasticsearch-head下载地址: https://github.com/mobz/elasticsearch-head
下载后解压缩到/opt/elasticsearch-head,给es用户目录权限
6.3 安装
境外源比较慢,可以使用taobao.org的源
npm install cnpm -g --registry=https://registry.npm.taobao.org
cd /opt/elasticsearch-head
cnpm install #代表通过境内源进行安
6.4 配置
cd /opt/elasticsearch-head
vim Gruntfile.js
按照下面修改源配置文件
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
修改elasticsearch-head默认连接地址
Cd /opt/elasticsearch-head/_site
Vim app.js
将localhost修改为ESdeIP地址
修改前:this.base_uri = this.config.base_uri;
修改后:this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.5.32:9200";
修改elasticsearch的配置文件,使elasticsearch-head可以跨域访问elasticsearch(三台机器都需要做)
vim /opt/elasticsearch-7.6.0/config/elasticsearch.yml
在文件结尾添加如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
三台机器都做了如上配置后重新启动三台服务器
6.5 启动调试
手动启动
cd /opt/elasticsearch-head/
npm run start
出现上面的信息代表启动成功,可以通过浏览器访问http://192.168.5.32:9100
这里提示”集群健康值:未连接”,也就是没有连接到集群上,需要在输入框中把http://localhost:9200/
修改为http://192.168.5.32:9200
然后点击”连接”即可
出现以上信息后说明elasticsearch-head安装成功
测试了设置开机自启动,都不成功,只能每次开机手动启动了 一一!
7 Kibana安装部署
7.1 下载安装包
下载地址: https://www.elastic.co/cn/downloads/kibana
Kibana版本需要与Elasticsearch版本严格一致, 这里直接下载需要选择对应版本, 点击图中的past releases
即可选择版本
选择对应的版本
这里需要下载tar.gz类型的文件
7.2 解压到安装目录
tar -zxvf kibana-7.6.0-linux-x86_64
# 编辑配置文件
cd kibana-7.6.0-linux-x86_64
vim config/kibana.yml
#修改 server.host 和 elasticsearch.url 的配置,分别指定 kibana 和 elasticsearch 所在的服务器及端口
server.host: "你的ip"
elasticsearch.url: "http://Elasticsearch的ip:9200"
7.3 启动Kibana
./bin/kibana
启动成功访问 http://Kibana机器地址:5601