elk 简介与背景
下文将简介本专栏会涉及的概念,大多会一笔带过。如果有详细了解的需求,请自行查找。
一.背景
在项目落地之后,总有客户因为错误操作造成数据问题,但是总是提出是系统问题,所以决定做一个日志模块,能准确打印出用户操作的所有日志,但是 1.0 系统的实践后,会发现在经过一段时间的系统运行后,由于日志太大,会造成查询卡顿等情况。经过调研后决定使用 elk 日志收集。
二.elk 介绍
e 指的是 elasticsearch,为一种实时搜索和分析引擎(类似 nosql)。l 指的是 logstash,主要负责日志的采集,并传输到 elasticsearch。k 指的是 kibana,主要是可视化界面,用于操作 elasticsearch。
三.elasticsearch 简介
elasticsearch 是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在 Elasticsearch 中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。
elasticsearch 比传统关系型数据库如下:
四.什么是倒排索引
elasticsearch 核心就是倒排索引,那什么是倒排索引呢?
正排索引:传入 id,查询出当前 id 所对应的数据。倒排索引:传入是单词,查询包含此单词数据的 id。例如:传入电视,elasticsearch 会查询包含电视数据的 id 并返回。
所以 elasticsearch 相对于传统数据库,更适合于查询。
五.分词器
1.什么是分词?
在一段数据存入时,会按照一定规律切分一段一段的单词,为下文的倒排索引查询做准备。例如,"冰箱彩电洗衣机"可能会被分成冰箱、彩电、洗衣机。这样在倒排索引中分别输入,就能获取数据的 id 了。
2.什么需要单独配置分词器
由于 elasticsearch 是老外研究的,所以默认的分词器只能识别英语,所以需要单独配置分词器。
3.装分词器之前
结果如下:
会发现都是单个汉字。
4.装分词器后
结果:
看到这就不用多说了,符合我们想要结果。
上诉语句可以参考下文安装后,在 kibana 中自行测试。
六.简单语句总结
下文是 elasticsearch 比较常用且简单的语句,在下文安装后,在 kibana 中自行测试。
1.查询服务信息
2.操作索引
3.文档操作
4.数据脚本
这里提供一个 my_index 的索引供大家测试。
5.查询索引
这里比较常用的就是查询索引,下文将介绍一下
1.查询所有数据
2.通过具体字段查询
3.通过查询并排序
4.must(相当于 and)
5.must_not (相当于 not)
版权声明: 本文为 InfoQ 作者【小黄鸡1992】的原创文章。
原文链接:【http://xie.infoq.cn/article/d58bdd4c6a1b362c1541974d4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论