文章目录
ELK环境搭建+入门使用
前言
- 使用的Elasticsearch、Logstash、Kibana版本均为7.13
- 使用场景假定为对一堆文章做搜索,这里设定一个场景然后可以不断的完善这个场景,从而触发学习ELK相关知识,个人认为比枯燥的看文档来的快,带着疑问学习,才有效果
- 在博文中我会把自己学习ELK时如何思考写出来,供参考,希望以后学习、入门其他技术时对你自己的思考有帮助
- 建议使用Windows的时候使用PowerShell
使用的数据格式定义
一篇文章的基本数据结构如下
{
"title": "文章标题-字符串类型",
"author": "作者名字-字符串类型",
"article_content": "文章实际内容-字符串类型",
"article_genre": "文章体裁-字符串类型,可以有多个值,也就是说这个字段对应的是数组",
"chines": "文章是否为中文-布尔类型",
"reading_count": "文章被阅读数-数值类型",
"created": "文章创建时间-日期类型",
"updated": "文章更新时间-日期类型"
}
安装、启动
Windows版本安装方式可在官网上找到安装方式,这里给一个ES Windows安装方式,其他两个参考官方文档即可
brew tap elastic/tap
brew install elastic/tap/elasticsearch-full
brew install elastic/tap/kibana-full
brew install elastic/tap/logstash-full
启动ES
默认使用9200端口
brew service start elasticsearch
稍等一会
出现类似下面格式的信息则代表启动成功
{
"name" : "duhongbodeMacBook-Pro.local",
"cluster_name" : "elasticsearch_jacksparrow414",
"cluster_uuid" : "rp73VaY8RRCgQrl4M5uR9A",
"version" : {
"number" : "7.7.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "ad56dce891c901a492bb1ee393f12dfff473a423",
"build_date" : "2020-05-28T16:30:01.040088Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
启动Kibana
启动之前需要配置下kibana.yml文件,打开端口和host,路径在/usr/local/etc/kibana
brew service start kibana
在浏览器输入localhost:5601即可访问
启动Logstash
配置first-pipeline.conf
input {
2 stdin {
}
5 }
6
7 output {
8 elasticsearch {
9 hosts => [ "localhost:9200" ]
10 user => "elastic"
11 password => "password"
12 }
13 }
前台启动Logstash
进入logstash配置目录
cd /usr/local/etc/logstash
不知道logstash配置目录在哪?查看Logstash directory layout
指定配置文件first-pipeline执行
logstash -f first-pipeline.conf --config.reload.automatic
若要在前台关闭logstash则使用CTRL-D
在Logstash中安装插件
如果需要安装插件,参看官方文档和logstash插件名字列表
配置基本权限
如果没有配置权限,登录到Kibana上提示要配置权限
对于开发时的权限配置,配置最小的权限即可.
配置ES用户名密码
配置用户名密码的文档
这里全部密码设置成password
配置Kibana权限
将kibana.yml下的elasticsearch相关的username注释放开
后续步骤见官方文档
配置好权限之后登录
访问kibana.localhost:5601,使用用户名elastic,密码password进行登陆
登录Kibana
登录进去之后,进入Dev Tools,对ES的rest操作,使用这个可视化的面板,体验比较好,还自动提示
ES创建数据
创建index
如果有Solr的使用经验,可以简单理解为Elasticsearch中的Index相当于Solr中的core,相当于具有类似数据结构的数据的集合。(为什么说类似而不是一致呢?因为index下可以根据type动态的来调整数据结构,入门这里不做深入说明)
注意:虽然也可以不用创建index,再写数据时,ES如果发现没有index,会动态的进行创建,但这里还是采用先创建index,再写数据的方式
既然是数据的集合,首先要定义Index和其中数据结构,在Kibana中的Managent->Dev Tools中
PUT /my-articles
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"author": {
"type": "text"
},
"article_content": {
"type": "text"
},
"article_genre": {
"type": "text"
},
"chinese": {
"type": "boolean"
},
"reading_count": {
"type": "integer"
},
"created": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"updated": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
},
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 1
}
},
"aliases": {
}
}
-
创建index,使用PUT方法,后面跟具体的index名字,注意index名字必须全部小写,index命名详细规则
-
Request body中结构为mappings-定义具体数据的数据结构、setttings-index的分片数,复制数、aliases-目前我还没研究有什么用,不涉及到具体场景的先不研究
-
mappings的下一级是properties,properties里就是具体数据的字段,以及字段对应的类型,格式为
"字段名": { "type": "具体字段对应的类型" }
上面的mappings中,按照最上面定义的数据格式声明字段,有字符串类型的text,布尔类型的boolean,日期类型的date,数值类型的integer。更多数据类型见官方Field文档
查看创建的index
刚刚创建好,那么第一个想法是查一下刚才完整的index的结构
GET /my-articles
查看创建的mappings
只查看mappings的结构
GET /my-articles/_mapping
查看某个字段的数据类型
查看author的数据类型
GET /my-articles/_mapping/field/author
创建数据
定义好数据结构之后,便可以添加数据.ES添加数据文档
POST /my-articles/_doc
{
"title": "青玉案·元夕",
"author": "辛弃疾",
"article_content":"东风夜放花千树,更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。",
"article_genre": ["古词","记叙文"],
"reading_count": 25,
"chinese": true,
"created": "2021-06-03 19:27:56",
"updated": "2021-06-03 19:27:56"
}
有两种方式,一种是创建时指定ID,一种就是不指定ID,由ES生成,这里采用第二种方式.
在Kibana中展示数据
在Kibana中展示数据,直接点击Discovery即可。但在点之前,需要创建indexpatterns
创建IndexPatterns
Management->Stack Management->Kibana->Index Patterns
点击Created index pattern ,选择刚刚创建的index名字,点击Next step,在time field那里可以选择created,然后点击Create index pattern
查看数据
选择具体的index patterns,点击刷新,如果没有数据,调整到有数据的区间即可
默认只有Time和Document
可以将经常查看的field点击+添加到列中
写在最后
本篇只做最简单的入门说明,可以看到,我思路是
- 先下载,保证正常安装
- 启动,保证三个组件启动都是没问题的
- 然后自己模拟了一个场景,根据这个场景的需要(这里只需要创建index、添加数据这两个简单的场景,至于修改index,修改数据不在我入门的思路里面,我的理解是入门要快速建立起对这个东西的兴趣,其他的可以留在后续的思考中),再去看对应的官方文档
而且由于入门这个场景还用不到Logstash,所以只是保证安装、启动没问题即可,后续博文用到Logstash时会进行更详细的说明
思维导图
下一篇文章会着重在Elasticsearch的查询语法上