一、kibana-7.3.0安装配置
Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。
提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。
1.1 软件准备
名称 | 日志 |
---|---|
kibana-7.3.0-linux-x86_64.tar.gz | 下载链接,提取码:5555 |
elasticsearch-head.zip | 下载链接,提取码:5555 |
elasticsearch-analysis-ik-7.3.0.zip | 下载链接,提取码:5555 |
elasticsearch-7.3.0-linux-x86_64.tar.gz | 下载链接,提取码:5555 |
jdk-8u261-linux-x64.rpm | 下载链接,提取码:5555 |
1.2 基本环境
-
一台虚拟机:CentOS 7.x 64 bit
-
客户端连接工具:XShell(使用XShell将kibana上传到centos)
-
搭建elasticsearch基础环境:Elasticsearch7.3.0环境搭建(Elasticseach Single-Node Mode单节点模式)
1.3 搭建流程
1. root账户进行解压缩安装包
#
tar -zxvf kibana-7.3.0-linux-x86_64.tar.gz
mv /root/kibana-7.3.0-linux-x86_64 /usr/kibana/
2. 改变es目录拥有者账号和访问权限
# 改变es目录拥有者账号
chown -R esdabing /usr/kibana/
# 还需要设置访问权限
chmod -R 777 /usr/kibana/
3. 修改配置文件
vim /usr/kibana/config/kibana.yml
修改端口,访问ip,elasticsearch服务器ip
server.port: 5601
server.host: "0.0.0.0" # 监听所有ip地址
elasticsearch.hosts: ["http://192.168.253.111:9200"]
4. 切换用户启动
# 切换用户 (使用root也可以启动)
su esdabing
# 启动
./bin/kibana --allow-root # root用户
/usr/kibana/bin/kibana # 普通用户
5. 测试,访问ip:5601,即可看到安装成功
6. kidbana使用页面
选择左侧的DevTools菜单,即可进入控制台页面:
在页面右侧,我们就可以输入请求,访问Elasticsearch了。
ctrl+enter 提交请求
ctrl+i 自动缩进
二、Elasticsearch集成IK分词器
方式一:下载插件并安装
1)在elasticsearch的bin目录下执行以下命令,es插件管理器会自动帮我们安装,然后等待安装完成:
/usr/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip
2)下载完成后会提示 Continue with installation?输入 y 即可完成安装
3)重启Elasticsearch 和Kibana
./bin/kibana --allow-root
/usr/elasticsearch/bin/elasticsearch
方式二:上传安装包安装
1)在elasticsearch安装目录的plugins目录下新建 analysis-ik 目录
#新建analysis-ik文件夹
mkdir analysis-ik
#切换至 analysis-ik文件夹下
cd analysis-ik
#上传资料中的 elasticsearch-analysis-ik-7.3.0.zip
#解压
unzip elasticsearch-analysis-ik-7.3.3.zip
#解压完成后删除zip
rm -rf elasticsearch-analysis-ik-7.3.0.zip
2)重启Elasticsearch 和Kibana
测试 IK分词器
IK分词器有两种分词模式:
- ik_max_word (常用),会将文本做最细粒度的拆分
- ik_smart模式 ,会做最粗粒度的拆分
在Kibana测试一波输入下面的请求:
ik_max_word 分词模式运行得到结果:
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京市长江大桥"
}
ik_smart分词模式运行得到结果:
POST _analyze
{
"analyzer": "ik_smart",
"text": "南京市长江大桥"
}
扩展词典使用
扩展词:就是不想让哪些词被分开,让他们分成一个词。比如上面的江大桥
自定义扩展词库
1)进入到 config/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/config(安装包安装方式) 目录下, 新增自定义词典
cd /usr/elasticsearch/config/analysis-ik/
vim dabing_ext_dict.dic
输入 :江大桥
2)将我们自定义的扩展词典文件添加到IKAnalyzer.cfg.xml配置中
vim IKAnalyzer.cfg.xml
3)重启Elasticsearch
停用词典使用
停用词:有些词在文本中出现的频率非常高。但对本文的语义产生不了多大的影响。例如英文的a、an、the、of等。或中文的”的、了、呢等”。这样的词称为停用词。停用词经常被过滤掉,不会被进行索引。在检索的过程中,如果用户的查询词中含有停用词,系统会自动过滤掉。停用词可以加快索引的速度,减少索引库文件的大小。
自定义停用词库
1)进入到 config/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/config(安装包安装方式) 目录下, 新增自定义词典
vim dabing_stop_dict.dic
2)将我们自定义的停用词典文件添加到IKAnalyzer.cfg.xml配置中]
3)重启Elasticsearch
同义词典使用
语言博大精深,有很多相同意思的词,我们称之为同义词,比如“番茄”和“西红柿”,“馒头”和“馍”等。在搜索的时候,我们输入的可能是“番茄”,但是应该把含有“西红柿”的数据一起查询出来,这种情况叫做同义词查询。
注意:扩展词和停用词是在索引的时候使用,而同义词是检索时候使用。
配置IK同义词
Elasticsearch 自带一个名为 synonym 的同义词 filter。为了能让 IK 和 synonym 同时工作,我们需要定义新的 analyzer,用 IK 做 tokenizer,synonym 做 filter。听上去很复杂,实际上要做的只是加一段配置。
1)创建/config/analysis-ik/synonym.txt 文件,输入一些同义词并存为 utf-8 格式。例如
china,中国
2)创建索引时,使用同义词配置,示例模板如下
PUT /索引名称
{
"settings": {
"analysis": {
"filter": {
"word_sync": {
"type": "synonym",
"synonyms_path": "analysis-ik/synonym.txt"
}
},
"analyzer": {
"ik_sync_max_word": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_max_word"
},"ik_sync_smart": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_smart"
}
}
}
},
"mappings": {
"properties": {
"字段名": {
"type": "字段类型",
"analyzer": "ik_sync_smart",
"search_analyzer": "ik_sync_smart"
}
}
}
}
以上配置定义了ik_sync_max_word和ik_sync_smart这两个新的 analyzer,对应 IK 的 ik_max_word 和ik_smart 两种分词策略。ik_sync_max_word和 ik_sync_smart都会使用 synonym filter 实现同义词转换
3)到此,索引创建模板中同义词配置完成,搜索时指定分词为ik_sync_max_word或ik_sync_smart。
4)案例
PUT /dabing-es-synonym
{
"settings": {
"analysis": {
"filter": {
"word_sync": {
"type": "synonym",
"synonyms_path": "analysis-ik/synonym.txt"
}
},
"analyzer": {
"ik_sync_max_word": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_max_word"
},"ik_sync_smart": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_smart"
}
}
}
},
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_sync_max_word",
"search_analyzer": "ik_sync_max_word"
}
}
}
}
插入数据
POST /lagou-es-synonym/_doc/1
{
"name":"拉勾是中国专业的互联网招聘平台"
}
使用同义词"lagou"或者“china”进行搜索
POST /lagou-es-synonym/_doc/_search
{
"query": {
"match": {
"name": "lagou"
}
}
}