Elasticsearch掰开揉碎第6篇Kibana详解

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch掰开揉碎第6篇Kibana详解相关的知识,希望对你有一定的参考价值。

引言

上一篇主要讲解的是:安装elasticsearch的图形化管理插件head、使用head操作elasticsearch、扩展之head史上最简单的安装方式。

本篇主要讲解的是:专为Elasticsearch设计的开源分析和可视化平台Kibana,可以使用Kibana来搜索,查看存储在Elasticsearch索引中的数据并与之交互,很容易实现高级的数据分析和可视化,以图表的形式展现出来,例如直方图、线形图、饼图、热图和内置的地理空间支持。

Kibana本身是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例,功能很强大。

linux下的kibana安装

1、创建目录

[root@hadoop102 ~]# mkdir -p /usr/local/kibana

2、上传kibana压缩包并解压

[root@hadoop102 ~]# tar zxvf /tmp/kibana-7.8.0-linux-x86_64.tar.gz -C /usr/local/kibana/

3、配置kibana

[root@hadoop102 ~]# cd /usr/local/kibana/kibana-7.8.0-linux-x86_64/config/

[root@hadoop102 config]# vi kibana.yml  

server.port: 5601    #开放端口

server.host: "0.0.0.0"    #允许任何IP访问

#ES集群连接信息

elasticsearch.hosts: ["http://192.168.8.102:9200","http://192.168.8.103:9200","http://192.168.8.104:9200"]  

4、启动kibana

[root@hadoop102 ~]#  cd /usr/local/kibana/kibana-7.8.0-linux-x86_64/

[root@hadoop102 kibana-7.8.0-linux-x86_64]# nohup bin/kibana --allow-root &

5、关闭kibana

有需要操作时,再进行关闭

[root@hadoop102 ]# ps -ef|grep "allow-root"  

[root@hadoop102 ]# kill -9 上一步查询的pid

6、浏览器访问

http://192.168.8.102:5601/

Elasticsearch掰开揉碎第6篇Kibana详解_kibana

7、连接ES

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_02

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_03

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_04

使用Kibana操作ES

1、查看索引的数据

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_05

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_06

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_07

2、查询索引中指定的数据

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_08

3、开发工具

Elasticsearch掰开揉碎第6篇Kibana详解_elk_09

它默认有联想功能

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_10

Elasticsearch掰开揉碎第6篇Kibana详解_elk_11

4、删除Kibana和索引的关联

并不会删除ES中的指定索引

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_12

Elasticsearch掰开揉碎第6篇Kibana详解_elk_13

Elasticsearch掰开揉碎第6篇Kibana详解_elk_14

此处操作,只是把Kibana和ES中指定的索引,关联关系删除了。ES中指定的索引还在,没有任何影响。

5、通过Kibana真正的操作索引

Elasticsearch掰开揉碎第6篇Kibana详解_elk_15

此时会查看到ES中,所有的数据,无论索引中是否有数据

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_16

6、Rest风格操作

Elasticsearch掰开揉碎第6篇Kibana详解_elk_17

6.1索引的操作

6.1.1、创建索引

语法:PUT /索引名/~类型名~/文档id

请求体

实战操作:

PUT /test1/type1/1

"name":"大飞哥",

"age":3

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_18

6.1.2、常用类型

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_19

6.1.3、创建mapping(创建索引并指定字段的类型)

PUT /test2

"mappings":

  "properties":

    "name":

      "type": "text"

    ,

    "age":

      "type": "long"

    ,

    "birthday":

      "type": "date"

   

 

6.1.4、获取指定索引信息

GET test2

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_20

6.1.5、查看默认字段类型

PUT /test3/_doc/1

"name":"大飞哥",

"age":3,

"birth":"1988-06-26"

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_21

GET test3

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_22

如果自己的文档字段没有指定,那么ES会给出默认配置字段类型。

6.1.6、扩展命令

GET _cat/health    查看集群健康状态

GET _cat/indices?V   查看所有索引

通过GET _cat/ 可以获得es的当前很多信息

6.1.7、修改索引(old全覆盖)

1、修改索引文档(指定所有字段)

PUT /test3/_doc/1

"name":"大飞哥123",

"age":3,

"birth":"1988-06-26"

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_23

2、查看数据

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_24

3、修改索引文档(指定部分字段)

PUT /test3/_doc/1

"name":"大飞哥123",

"age":3

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_25

4、查看数据

Elasticsearch掰开揉碎第6篇Kibana详解_elk_26

6.1.8、修改索引(new指定覆盖)

1、修改索引文档(指定部分字段)

POST /test3/_doc/1/_update

 "doc":

   "name":"法外狂徒张三"

   

Elasticsearch掰开揉碎第6篇Kibana详解_elk_27

2、查看数据

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_28

6.1.9、修改索引(new指定覆盖)、删除索引

通过使用DELETE命令实现删除,根据你的请求来判断,删除索引还是删除文档记录。

DELETE test1

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_29

6.2 文档的基本操作

6.2.1、准备数据

PUT /dafeige/user/1

"name":"大飞哥",

"age":3,

"desc":"一顿操作猛如虎,一看工资2500",

"tags":["技术宅","温暖","直男"]

PUT /dafeige/user/2

"name":"张三",

"age":3,

"desc":"法外狂徒",

"tags":["交友","旅游","渣男"]

PUT /dafeige/user/3

"name":"李四",

"age":30,

"desc":"mmp,不知道如何形容",

"tags":["靓女","旅游","唱歌"]

PUT /dafeige/user/4

"name":"大飞哥oracle",

"age":6,

"desc":"一顿操作猛如虎,一看工资2500",

"tags":["技术宅","温暖","直男"]

6.2.2、GET获取数据

GET dafeige/user/1

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_30

6.2.3、PUT更新数据(全覆盖)

PUT /dafeige/user/3

"name":"李四234",

"age":30,

"desc":"mmp,不知道如何形容",

"tags":["靓女","旅游","唱歌"]

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_31

6.2.4、POST更新数据(部分修改)

POST /dafeige/user/1

"doc":

 "name":"大飞哥说bigdata"

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_32

查询出结果,发现和PUT操作没有区别

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_33

还原数据

PUT /dafeige/user/1

"name":"大飞哥",

"age":3,

"desc":"一顿操作猛如虎,一看工资2500",

"tags":["技术宅","温暖","直男"]

更新操作

POST /dafeige/user/1/_update

"doc":

 "name":"大飞哥说bigdata"

从结果中看出来,只修改了name对应的值,其它列的值还在。

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_34

6.2.5、简单的条件查询

GET dafeige/user/_search?q=name:大飞哥

Elasticsearch掰开揉碎第6篇Kibana详解_elk_35

score:查询时带有条件,如果查询结果有多条,匹配度越高,score值越大。

6.2.6、字段类型说明

"name":

"type": "text",  

"fields":

 "keyword":

  "ignore_above": 256,  

  "type": "keyword"  #整体搜索,分词器不会产生作用。如果想分词,使用text类型。

 

 

在fields中声明子属性时,type值为keyword,此字段整体搜索,分词器不会在此字段上产生作用。如果type值为text,才能分词。

6.3 文档的复杂操作

6.3.1、查询指定参数值

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_36

6.3.2、查询结果说明

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_37

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_38

6.3.3、部分字段显示

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 ,

 "_source":["name","desc"]

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_39

6.3.4、排序结果

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 ,

 "sort":[

   

     "age":

       "order":"asc"

     

   

 ]

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_40

6.3.5、分页查询

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 ,

 "sort":[

   

     "age":

       "order":"asc"

     

   

 ],

 "from":0,

 "size":1

参数说明

from:从哪条记录开始

size:取几条记录

因为我们关于大飞哥的记录有2条,从下面结果看出来,分页起作用了,只显示了1条。

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_41

6.3.6、布尔多条件查询

1、must(and),所有的条件都要符合

GET dafeige/user/_search

 "query":

   "bool":

     "must": [

       

         "match":

           "name": "大飞哥"

         

       ,

       

         "match":

           "age": "6"

         

       

     ]

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_42

2、should(or),只要有条件符合就行

GET dafeige/user/_search

 "query":

   "bool":

     "should": [

       

         "match":

           "name": "大飞哥"

         

       ,

       

         "match":

           "age": "6"

         

       

     ]

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_43

3、not,取否定条件

GET dafeige/user/_search

 "query":

   "bool":

     "must_not": [

       

         "match":

           "age": "6"

         

       

     ]

   

 

6.3.7、filter过滤器

1、name中带有大飞哥,同时要求年龄>3

GET dafeige/user/_search

 "query":

   "bool":

     "must": [

       

         "match":

           "name": "大飞哥"

         

       

     ],

     "filter": [

       

         "range":

           "age":

             "gt": 3

           

         

       

     ]

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_44

2、操作符说明:

gt大于、gte大于等于、lt小于、lte小于等于

3、name中带有大飞哥,同时要求 4<=年龄<=20

GET dafeige/user/_search

 "query":

   "bool":

     "must": [

       

         "match":

           "name": "大飞哥"

         

       

     ],

     "filter": [

       

         "range":

           "age":

             "gte": 4,

             "lte": 20

           

         

       

     ]

   

 

12.3.8、匹配多条件查询

1、关于分词:

term:查询是直接通过 倒排索引 指定的词条进行精确查找的

match:会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)

2、match多条件(多条件之间使用 空格)

GET dafeige/user/_search

 "query":

   "match":

     "tags": "男 技术"

   

 

score就是权重,满足条件的越多,score就越大。

Elasticsearch掰开揉碎第6篇Kibana详解_kibana_45

3、分词演示

没有被分词

GET _analyze

 "analyzer": "keyword",

 "text": "飞哥说bigdata name"

Elasticsearch掰开揉碎第6篇Kibana详解_elk_46

被分词了

GET _analyze

 "analyzer": "standard",

 "text": "飞哥说bigdata name"

Elasticsearch掰开揉碎第6篇Kibana详解_elk_47

4、text和keyword类型

创建索引

PUT testdb

"mappings":

  "properties":

    "name":

      "type": "text"

    ,

    "desc":

      "type": "keyword"

   

 

插入数据

PUT testdb/_doc/1

"name":"飞哥说bigdata name1",

"desc":"飞哥说bigdata desc1"

PUT testdb/_doc/2

"name":"飞哥说bigdata name2",

"desc":"飞哥说bigdata desc2"

5、使用term查询text和keyword类型

GET testdb/_search

 "query":

   "term":

     "name": "飞"

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_48

GET testdb/_search

 "query":

   "term":

     "desc": "飞哥说bigdata desc"

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_49

GET testdb/_search

 "query":

   "term":

     "desc": "飞哥说bigdata desc1"

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_elk_50

从结果可以看出来:

1、name类型是text,对name进行query时,可以分词的,模糊匹配

2、desc类型是keyword,对desc进行query时,不能分词,完全精准匹配

6、多个值匹配精确查询

初始化数据(testdb中会多出t1和t2两个列,默认是keyword类型的)

PUT testdb/_doc/3

"t1":"22",

"t2":"2020-4-6"

PUT testdb/_doc/4

"t1":"33",

"t2":"2020-4-7"

查询

GET testdb/_search

 "query":

   "bool":

     "should": [

       

         "term":

           "t1": "22"

         

       ,

       

         "term":

           "t1": "33"

         

       

     ]

   

 

7、高亮查询

默认em格式

查询出name中包含大飞哥的,把name字段高亮显示

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 ,

 "highlight":

   "fields":

     "name":

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_可视化平台_51

自定义高亮格式

GET dafeige/user/_search

 "query":

   "match":

     "name": "大飞哥"

   

 ,

 "highlight":

   "pre_tags": "<p class=key style=color:red>",  

   "post_tags": "</p>",  

   "fields":

     "name":

   

 

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_52

windows下的Kibana安装

1、下载压缩包并解压

此处我将它解压到D盘根目录

2、修改config/kibana.yml文件

注意此文件默认编码格式

Elasticsearch掰开揉碎第6篇Kibana详解_elk_53

追加如下内容

# 默认端口server.port: 5601  

# ES 服务器的地址

elasticsearch.hosts: ["http://192.168.8.102:9200"]  

# 索引名

kibana.index: ".kibana"

# 支持中文

i18n.locale: "zh-CN"

3、启动kibana

Elasticsearch掰开揉碎第6篇Kibana详解_elk_54

Elasticsearch掰开揉碎第6篇Kibana详解_Elasticsearch_55

4、通过浏览器访问

http://localhost:5601/

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_56

5、简单测试

Elasticsearch掰开揉碎第6篇Kibana详解_elk_57

Elasticsearch掰开揉碎第6篇Kibana详解_数据分析_58

至此,windows下的Kibana安装就成功了。

结束语

至此,Elasticsearch掰开揉碎系列的第6篇就结束了,本篇文章中主要要讲解的是:linux下的kibana安装、windows下的kibana安装、使用Kibana操作ES。本篇文章内容有点多,兄弟们加油干吧!!

下一篇我带来的是:analysis-ik中文分词器。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!

以上是关于Elasticsearch掰开揉碎第6篇Kibana详解的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch掰开揉碎第2篇linux环境搭建

Elasticsearch掰开揉碎第10篇maven项目

Elasticsearch掰开揉碎第9篇Java基础环境搭建

Elasticsearch掰开揉碎第13篇SpringData操作ES基础篇

Elasticsearch掰开揉碎第12篇java操作ES常用API

Llinux课程计划安排