想用ElasticSearch做一个应用的搜索,来提高查询速度。查了下资料发现需要ELK(ElasticSearch、Logstash、Kibana)三个软件一起配合使用更好;再加上beats(单一采集器),统称为Elastic Stack,不过我没用到beats,这里只简单介绍ELK在centos8环境下的压缩包安装。
注意选择安装版本
先去https://github.com/medcl/elasticsearch-analysis-ik/releases/ 看一下中文分词插件的最新版本,然后再去官网下载相同版本号的elasticsearch: https://www.elastic.co/cn/downloads/elasticsearch 。我刚开始安装了elasticsearch8.3.2,后来安装插件时发现没有8.3.2版本的中文分词插件,低版本的又不能安装,最后我又重新下载安装了elasticsearch8.2.2版本。
一、安装ElasticSearch
# 解压安装包
tar -xvf elasticsearch-8.2.2-linux-x86_64.tar.gz
# 切换到配置文件目录
cd /opt/elasticsearch-8.2.2/config
# 编辑jvm.options文件,修改内存参数
vim jvm.options
把jvm.options文件中默认的
## -Xms4g
## -Xmx4g
改为(根据实际内存调整,我是测试的,后来改为512m)
-Xms1g
-Xmx1g
修改配置文件:
# 编辑 elasticsearch.yml 配置文件
vim elasticsearch.yml
将默认的
#network.host: 192.168.0.1
改为 (为了其他外网电脑可以访问到,默认只是本机能访问到)
network.host: 0.0.0.0
#增加下面这行,关闭ip地址库下载(网络原因,有时会报错)
ingest.geoip.downloader.enabled: false
# 如果测试用,可以关闭用户密码登录,把下面的值改为false
xpack.security.enabled: false
创建一个es用户并授权
#ES不能使用root用户启动,那么我们新建一个es用户,并赋予权限:
useradd es
#修改密码
passwd es
#改变目录权限
chown -R es:es elasticsearch-8.2.2
#可以把es用户加入到sudoers中,这里省略
还需要修改一些系统的配置才能运行
# 修改文件句柄数
vim /etc/security/limits.conf
#增加以下内容
* soft nofile 65536
* hard nofile 65536
# 调整vm.max_map_count的大小
# 永久修改
echo vm.max_map_count=262144 >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
# 临时修改
sysctl -w vm.max_map_count=262144
或sudo sysctl -w vm.max_map_count=262144
安装中文分词插件并运行(在线)
#切换为es用户
su es
cd elasticsearch-8.2.2/bin
# 安装中文分词插件
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.2.2/elasticsearch-analysis-ik-8.2.2.zip
# 查看插件是否安装成功
./elasticsearch-plugin list
#启动ES
./elasticsearch &
如果开启了安全策略,第一次运行时不要加-d参数,因为要在终端显示密码,注意保存下来,类似以下:
Password for the elastic user (reset with bin/elasticsearch-reset-password -u elastic
):
R4wX1dhpU8WPY8*EEmB5
安装中文分词插件(离线)
对于网速慢或限制上网的朋友,还有一种安装插件的方法,就是先把elasticsearch-analysis-ik-8.2.2.zip下载到本地比如在/opt目录下,然后运行命令:
./elasticsearch-plugin install file:///opt/elasticsearch-analysis-ik-8.2.2.zip
开启防火墙端口
firewall-cmd --zone=public --permanent --add-port=9200/tcp
firewall-cmd --reload
测试是否正常运行
在浏览器中输入地址 http://ip地址:9200/ ,返回类似下面JSON即为成功:
{
"name": "test-centos-8-1",
"cluster_name": "elasticsearch",
"cluster_uuid": "T99WI-IdRAqVjGPzbpeD3A",
"version": {
"number": "8.2.2",
"build_flavor": "default",
"build_type": "tar",
"build_hash": "9876968ef3c745186b94fdabd4483e01499224ef",
"build_date": "2022-05-25T15:47:06.259735307Z",
"build_snapshot": false,
"lucene_version": "9.1.0",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
},
"tagline": "You Know, for Search"
}
二、安装 Logstash
# 下载并解压(版本号一致)
sudo tar -xvf logstash-8.2.2-linux-x86_64.tar.gz
# 查看已安装的插件
cd /opt/logstash-8.2.2/bin
./logstash-plugin list
需要配置后才能运行数据采集,下一篇文章中(https://www.jianshu.com/p/80f8472b9235)会介绍用Jdbc input plugin插件来同步数据到ElasticSearch,这里就不运行了。试过logstash是可以用root账号来运行的。
三、安装 Kibana
# 下载并解压(版本号一致)
sudo tar -xvf kibana-8.2.2-linux-x86_64.tar.gz
# 修改配置文件
cd /opt/kibana-8.2.2/config
vim kibana.yml
修改以下值,将默认语言改为中文
i18n.locale: "zh-CN"
如果elasticsearch中开启了安全策略,还要修改账号和密码(新建的用户账号,不能用默认elastic账号)
运行Kibana
#开启防火墙端口
firewall-cmd --zone=public --permanent --add-port=5601/tcp
firewall-cmd --reload
#授权并切换为es用户
chown -R es:es kibana-8.2.2
su es
# 启动 Kibana
cd /opt/kibana-8.2.2/bin
./kibana &
查看运行
在浏览器中输入地址 http://ip地址:5601/ 就可以看到如下的界面:
四、学习资料分享
官方的资料多是英文的,我找到几个中文的:
Elastic Stack 实战手册:https://developer.aliyun.com/ebook/7687
ELKstack 中文指南:https://elkguide.elasticsearch.cn/logstash/get-start/
Kibana 用户手册:https://www.elastic.co/guide/cn/kibana/current/index.html
当然这些文档都不是最新版本的,最高也就7.0版,现在官方最新8.4版了。有些已经过时了,比如取消了type,不需要安装Jdbc input plugin插件了。如果你英文水平较好的话,还是看官网文档吧: https://www.elastic.co/guide/en/elasticsearch/reference/index.html