第一章:初识Elastic Stack
第二章:使用Elastic
第三章:Elasticsearch的相关插件
第四章:Elasticsearch的一些操作
官网:https://www.elastic.co/cn/
它是有中文版本的,网站后的cn是根据本地的local来进行寻址的。
我们先来看一下版本:我们使用的版本是6.6.6版本。
Elasticsearch:对您的数据进行搜索、分析、存储。
Kibana:实现数据可视化。
Logstash:作日志收集用的。
elastic stack(栈):
很多中小型公司的数据分析选型:Elasticsearch + Kibana,分为单机版和集群版,安装较为简单。
常见的ELK软件:Elasticsearch + Logstash(收集) + Kibana
1、Beats简介:
Beats:是一个面向轻量型采集器的平台(集合了多种单一用途数据采集器),这些采集器可以从边缘机器向Logstash和Elasticsearch发送数据。
Beats是数据采集的得力工具;将Beats和您的容器一起置于服务器上,或者将Beats作为功能加以部署,然后便可在Elasticsearch中集中处理数据。如果需要更加强大的处理性能,Beats还能将数据输送到Logstash
进行转换和解析。
2、Logstash简介:
1、File beat 日志文件收集器
2、Metricbeat 指标
3、Packetbeat 网络数据
4、Winlogbeat Windows事件日志
5、Auditbeat 审计数据
6、Heartbeat 运行事件监控
7、Functionbeat 无需服务器的采集器
借助强大功能,实现更多成果:
从Security(安全)到Alerting(报警)、Monitoring(监控)、Reporting(报告)、Graph(图)关联分析和Machine Learning(机器学习),轻松获取这些功能,并将您的Elastic stack带入到一个新的高度。
学过线下班,可以使用Elasticsearch做一个监控系统。
无论是就地部署,还是部署在云端,由您来决定。从公有云、到私有云,我们都能够让您轻松地运行和管理Elastic Stack.
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例;Elasticsearch作为Elastic Stack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
官网种此时已经更新到了7.3.2版本,注意,它是可以跑在windows上的,它的各个版本之间的兼容性是非常差的。
我们此次课程使用的是6.6.2版本的;如果使用的ELK,那么整个生态栈的版本都要使用相同的版本。
ES:主要是用来做搜索
MIS:做搜索,底层就是一个select语句(select * from XXX where …),通过一些前端技术将其展示出来的。
为什么我们不采用MIS的搜索方式呢?
1、第一点是因为MIS方式是点对点的查询
2、如下这种情况我们使用的是分词
我们在百度下查询,搜索是高亮选项:这个高亮选项在ES中是自带的。
正排索引的规则:doc_id到doc_content的关系
doc_id | doc_content |
---|---|
1 | 若泽数据从事大数据培训 |
2 | Spark是一种分布式计算引擎 |
3 | 大数据培训有很多 |
倒排索引的规则:从单词到doc_id的关系
引入了分词器概念,不同的分词器查询出来的东西是不一样的,假设是像下面这样拆分的:
word | doc_id |
---|---|
若泽数据 | 1 |
从事 | 1 |
大数据培训 | 1,3 |
Spark | 2 |
一种 | 2 |
分布式 | 2 |
计算引擎 | 2 |
很多 | 3 |
1、我们把一个东西构建成索引之后,然后这个索引能够被查出来的时间近乎似实时的;数据进去跟出来有很短的延迟。
2、把一个节点的属性设置为同一个名字,自动能被加进集群中去。
Deprecated in 6.0.0中
A type used to be a logical category/partition of your index(用来描述索引中逻辑的概念和分区) to allow you to store different types of documents in the same index, eg: one type for users, another type for blog posts. it is no longer possible to create multiple types in an index, and the whole concept of types will be removed in a later version.
我们把index理解为数据库,Type就是数据库中的表;目前一个index中只能有一个type,没有那么的重要
Field : column
我们常用的是Index、Document、Type、Field
1、下载、解压、环境变量
2、目录结构如下:
bin:所有的脚本
config:一堆的配置信息
lib:一堆jar包
logs:日志文件
plugins:ES支持插件,存放插件用的
在本机上进行测试:curl -XGET 127.0.0.1:9200,我们发现在本机上是通的,为什么浏览器访问不了???
修改elasticsearch.yml配置文件,我们cat查看其中的信息:
查看到elasticsearch.yml中有个network的信息:network.host需要进行修改:
ES的限制比较多:curl -XGET hadoop004:9200 curl -XGET 127.0.0.1:9200
进行如下修改:
1、修改cluster-name:ruozedata-es-cluster
2、修改node-name:ruozedata-es-node1
3、修改network.host : 0.0.0.0
4、修改path.data: /home/hadoop/app/elasticsearch-6.6.2/data
修改完成后再次启动ES,./elasticsearch
测试能否进行通信:
curl -XGET localhost:9200
curl -XGET 172.19.149.226:9200 //这个是内网IP
curl -XGET 127.0.0.1:9200
bin/elasticsearch -E cluster.name=ruozedata-es-cluster2 -E node.name=ruozedata-es-node2
bin/elasticsearch -d
查看近200行日志,看哦不哦K,tail -200f logs/elasticsearch.log
参考博客如下:
进行测试,报错如下:
启动如下:
1、就是查看节点信息:
出现的问题:另外一个节点访问不到了,WHY?
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2019-09-22T17:57:22,598][INFO ][o.e.n.Node ] [ruozedata-es-node1] stopping ...
[2019-09-22T17:57:22,614][INFO ][o.e.n.Node ] [ruozedata-es-node1] stopped
[2019-09-22T17:57:22,614][INFO ][o.e.n.Node ] [ruozedata-es-node1] closing ...
[2019-09-22T17:57:22,623][INFO ][o.e.n.Node ] [ruozedata-es-node1] closed
报错问题解决:
https://blog.csdn.net/lilongsy/article/details/82115980
在config/这个目录下的jvm.options下,里面的参数调整:
elasticsearch-head插件下载地址:
插件安装步骤如下网址依次安装部署:
我的测试机器是阿里云购买的付费云主机,所需安装的服务有node.js 、npm、bzip2;
1、安装所需的服务
2、npm install 我的当前环境报错了,解决如下:
https://www.jianshu.com/p/e5c117746060
3、npm run start
启动这个服务,不过启动前需要修改配置:
1、进入到这个目录:
2、使用命令开始启动:
3、http://106.14.186.41:9100/ 公网IP+port
在这个路径下编辑这个文件:
[hadoop@hadoop005 config]$ pwd
/home/hadoop/app/elasticsearch-6.6.2/config
[hadoop@hadoop005 config]$ ll
total 36
-rw-rw---- 1 hadoop hadoop 207 Sep 22 21:01 elasticsearch.keystore
-rw-rw---- 1 hadoop hadoop 2947 Sep 22 22:53 elasticsearch.yml
添加如下在这个配置文件中的头部位置:
http.cors.enabled: true
http.cors.allow-origin: "*"
一、Kibana核心产品搭载了一批经典功能:柱状图、线装图、饼图、旭日图、等等
二、通过Kibana中的Canvas,发挥无限创意
不受条条框框的限制,可以通过徽标、颜色和能够突出贵公司品牌特色的设计元素将自己的品牌和风格融入到数据中,讲述独属于您的故事。Canvas能够基于实时数据发挥无限创意,并且它还支持SQL.
三、安全的分享与合作
四、超级安全
五、用于数据采集等操作的堆栈管理
有了Kibana之后,命令行不再是管理安全设置、监测堆栈、采集和汇总数据或配置其他Elastic Stack功能的唯一途径。与此同时,得益于API,用户可以通过可视化UI轻松的管理ElasticStack并确保其安全性,这种方式更加直观,也更容易上手。查看完整的 Kibana 功能和 UI 列表
有时候我们只想对某个文件进行tail操作。或者希望跟踪自己网站的运行状况。或者希望查看分布式痕迹。通过Kibana内置应用,例如开源日志监测(Logs)、开源基础设施检测(Infrastructure)、开源应用程序性能监测(APM)、 开源运行状态监测(Uptime)以及其他应用,无需离开Kibana,就能轻松的完成这一切。
可点击,可拖动,可挖掘。乐享Kibana. Kibana自带Node.js.Web服务器,无需额外代码或额外基础架构。
一、Kibana的下载网址:
通过Kibana,您可以对自己的Elasticsearch进行可视化,还可以在Elastic Stack中进行导航,这样就可以进行各种操作了,从跟踪查询负载,到理解请求如何流经您的整个应用,都能够轻松完成。
二、Kibana的部署安装:
1、To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "0.0.0.0"
2、The Kibana server's name. This is used for display purposes.
server.name: "ruozedata-kibnana"
配置文件修改完成后,直接进入到bin目录,启动Kibana:./kibana,我们去到浏览器上查看:外网IP+5061端口号;此时发现浏览器不能访问,于是在阿里云控制台上配置安全组;修改完后直接在浏览器中访问:http://106.14.186.41:5601/app/kibana#/home?_g=()
等等等等,还有很多…
常用参数:PUT、POST、DELETE
一个index索引库,默认是5个分片,2个副本;在node1中,分为0、2、4(黑框是主分片);在node2中,分为1、3.
注意:索引只能小写,大写ES它是不认的。
1、索引的创建:
curl -XPOST ‘http://hadoop005:9200/es/student/1’ -d ‘{
“name”:“zhangsan”,
“age”:“30”,
“interests”:[“spakr”,“flink”]
}’
报错信息如下:{“error”:“Content-Type header [application/x-www-form-urlencoded] is not supported”,“status”
需要指定content-type:
curl -XPOST -H “Content-Type:application/json” ‘http://hadoop005:9200/es/student/1’ -d ‘{
“name”:“zhangsan”,
“age”:“30”,
“interests”:[“spakr”,“flink”]
}’
解析:-H是用来指定Content-Type的
此时我们去到这个网址中:106.14.186.41:9100,点击数据浏览,点击es中就能查看到这些信息。
curl -XPOST -H "Content-Type:application/json" 'http://hadoop005:9200/es/student/2' -d '{
"name":"lisi",
"age":"40",
"interests":["eat","speak"]
}'
2、输入上述命令后控制台的打印:
{"_index":"es","_type":"student","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":0,"_primary_term":1}
2、点击Index Pattern,我们看到此处只有三个系统默认的索引库;需要点击Create index pattern,输入创建的索引库名字es,点击Next Step --> Create index pattern来进行关联。
CURL POST和PUT的区别:
POST:新增
PUT:修改
注意:我们新增的时候,可以不指定id,系统会为我们自动生成这个信息。
curl -XPOST -H "Content-Type:application/json" 'http://hadoop005:9200/es/student/' -d '{
"name":"wangwu",
"age":"50",
"interests":["Beautiful-girl","Money"]
}'
Elasticsearch-head中观察到如下:id是系统自动为我们生成的,且不会重复
put是修改,肯定是对已有的进行修改(这句话是错误的):
curl -XPUT -H "Content-Type:application/json" 'http://hadoop005:9200/es/student/100' -d '{
"name":"Mico",
"age":"23",
"interests":["take photo","play"]
}'
curl -XPUT -H "Content-Type:application/json" 'http://hadoop005:9200/es/student/100' -d '{
"name":"Mico",
"age":"24",
"interests":["make love","study"]
}'
RESTful风格的API了解? 博士论文
1、post方式可以指定id和不指定id的方式都可以
2、put的方式可以指定不存在的id和对已经存在的id的索引内容进行修改。
我们把具体的某一个索引删除,在Kibana中操作:
测试成功删除。