kibana 是一个数据显示工具,通常和 es 配套出现
7.4 的版本中开发工具(Dev Tool)里新提供了 grok 正则验证工具可以很好的验证 logstash 的匹配语法是否正确。
常用使用方法
词频统计
你知道一本书中,作者那些词用的最多吗?这些词在书籍中是否很重要。
es 默认的分词器主要针对的是英文的,所以我们需要安装中文分词,以下以 ik 分词器为例进行安装(网上的教程有些我觉得没有细说)
通过 GitHub 获取插件包。
- 点击 GitHub 插件包项目头部的 releases 项
- 找到你 es 对应的版本包(./bin/elasticsearch -v)
- 下载 elasticsearch-analysis-ik-x.x.x.zip 包
- 打开 es 安装目录中的 plugins 目录
- 解压 zip 压缩包到 plugins/ik 中
通过 kibana 开发工具设置 es 的字段使用 ik 分词器, 以下是我的执行
PUT article
{
"mappings": {
"properties": {
"id": {
"type": "long"
},
"title": {
"type": "text"
},
"author": {
"type": "text"
},
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"fielddata": true
}
}
}
}
POST article/_doc/1
{
"id": 1,
"title": "作为高级Java,你应该了解的Linux知识",
"author": "小姐姐的味道",
"content": "作为一个javaer,我以前写过很多关于Linux的文章。但经过多年的观察,发现其实对于大部分人,有些东西压根就用不着。用的最多的,就是到线上排查个问题而已,这让人很是苦恼。那么,我们就将范围再缩小一下。...."
}
POST article/_doc/2
{
"id": 2,
"title": "不停服! 怎么迁移数据",
"author": "草堂笺",
"content": "前言数据迁移时, 为了保证数据的一致性, 往往伴随着停服, 此期间无法给用户提供服务或只能提供部分服务. 同时, 为了确保迁移后业务及数据的正确性, 迁移后测试工作也要占用不少时间. 如此造成的损失是比较大的....."
}
PUT article/_doc/2
{
"id": 2,
"title": "testing不停服! 怎么迁移数据",
"author": "草堂笺",
"content": "前言数据迁移时, 为了保证数据的一致性, 往往伴随着停服, 此期间无法给用户提供服务或只能提供部分服务. 同时, 为了确保迁移后业务及数据的正确性, 迁移后测试工作也要占用不少时间. 如此造成的损失是比较大的....."
}
DELETE article/_doc/2
GET article/_search
{
"size": 0,
"aggs": {
"messages": {
"terms": {
"size": 1000,
"field": "content",
"include": "[\u4E00-\u9FA5]{2,}",
"exclude": "一.*"
}
}
}
}
添加自定义单词
ik 的中文词库并不太完整,有些需要自己的定义它没有的词。如富叔堡、嘤嘤怪、全员恶人等网络名词。
- 打开 plugins/ik/config/IKAnalyzer.cfg.xml 文件,xml ext_dict 节点中如果没有值就定义一个 .dic 文件即可。(注:文件需要使用无 bom 的 utf-8 编码)
- 添加热词(参考其他 .dic 文件)
- 重启 es 即可
以图表的形式展示词频数据
1、创建索引
2、创建图表
下面我们对词频进行过滤处理,不匹配“一”开头的词,以及内容为两个字的词。如果觉得词太少可以在大小中进行控制。
图形中并没有显示有词频有多少个,我们可以通过“检查”来查看详细数据,和请求的条件。
查看每个地区访问服务器的热度
这里的数据是通过 logstash 处理后保存的。可以查看我上一篇文章 logstash深入学习
1、创建索引
2、创建图表
FQA
汉化 kibana
logstash.yml 配置文件最下面 i18n.locale 项进行配置,值为 "zh-CN"
热更新 ik 分词
为什么我设置 _mapping 和你和不一样
自 7.x 起弃用 types 的概念。因为这样不利于 Lucene 高效压缩文档的能力。