Elasticsearch掰开揉碎第6篇Kibana详解

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述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/

7、连接ES



使用Kibana操作ES1、查看索引的数据



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

3、开发工具

它默认有联想功能


4、删除Kibana和索引的关联
并不会删除ES中的指定索引



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

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

6、Rest风格操作

6.1索引的操作6.1.1、创建索引
语法:PUT /索引名/~类型名~/文档id

请求体

实战操作:
PUT /test1/type1/1

"name":"大飞哥",
"age":3


6.1.2、常用类型

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

"mappings":
  "properties":
    "name":
      "type": "text"
    ,
    "age":
      "type": "long"
    ,
    "birthday":
      "type": "date"
   
 


6.1.4、获取指定索引信息
GET test2

6.1.5、查看默认字段类型
PUT /test3/_doc/1

"name":"大飞哥",
"age":3,
"birth":"1988-06-26"


GET test3

如果自己的文档字段没有指定,那么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"


2、查看数据

3、修改索引文档(指定部分字段)
PUT /test3/_doc/1

"name":"大飞哥123",
"age":3


4、查看数据

6.1.8、修改索引(new指定覆盖)
1、修改索引文档(指定部分字段)
POST /test3/_doc/1/_update

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


2、查看数据

6.1.9、修改索引(new指定覆盖)、删除索引
通过使用DELETE命令实现删除,根据你的请求来判断,删除索引还是删除文档记录。
DELETE test1

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

6.2.3、PUT更新数据(全覆盖)
PUT /dafeige/user/3

"name":"李四234",
"age":30,
"desc":"mmp,不知道如何形容",
"tags":["靓女","旅游","唱歌"]


6.2.4、POST更新数据(部分修改)
POST /dafeige/user/1
【Elasticsearch掰开揉碎第6篇Kibana详解】
"doc":
  "name":"大飞哥说bigdata"



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

还原数据
PUT /dafeige/user/1

"name":"大飞哥",
"age":3,
"desc":"一顿操作猛如虎,一看工资2500",
"tags":["技术宅","温暖","直男"]

更新操作
POST /dafeige/user/1/_update

"doc":
  "name":"大飞哥说bigdata"


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

6.2.5、简单的条件查询
GET dafeige/user/_search?q=name:大飞哥

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": "大飞哥"
   
 


6.3.2、查询结果说明


6.3.3、部分字段显示
GET dafeige/user/_search

  "query":
    "match":
      "name": "大飞哥"
   
  ,
  "_source":["name","desc"]


6.3.4、排序结果
GET dafeige/user/_search

  "query":
    "match":
      "name": "大飞哥"
   
  ,
  "sort":[
   
      "age":
        "order":"asc"
     
   
  ]


6.3.5、分页查询
GET dafeige/user/_search

  "query":
    "match":
      "name": "大飞哥"
   
  ,
  "sort":[
   
      "age":
        "order":"asc"
     
   
  ],
  "from":0,
  "size":1

参数说明
from:从哪条记录开始
size:取几条记录
因为我们关于大飞哥的记录有2条,从下面结果看出来,分页起作用了,只显示了1条。

6.3.6、布尔多条件查询
1、must(and),所有的条件都要符合
GET dafeige/user/_search

  "query":
    "bool":
      "must": [
       
          "match":
            "name": "大飞哥"
         
        ,
       
          "match":
            "age": "6"
         
       
      ]
   
 


2、should(or),只要有条件符合就行
GET dafeige/user/_search

  "query":
    "bool":
      "should": [
       
          "match":
            "name": "大飞哥"
         
        ,
       
          "match":
            "age": "6"
         
       
      ]
   
 


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
           
         
       
      ]
   
 


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就越大。

3、分词演示
没有被分词
GET _analyze

  "analyzer": "keyword",
  "text": "飞哥说bigdata name"


被分词了
GET _analyze

  "analyzer": "standard",
  "text": "飞哥说bigdata name"


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": "飞"
   
 


GET testdb/_search

  "query":
    "term":
      "desc": "飞哥说bigdata desc"
   
 


GET testdb/_search

  "query":
    "term":
      "desc": "飞哥说bigdata desc1"
   
 


从结果可以看出来:
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":
   
 


自定义高亮格式
GET dafeige/user/_search

  "query":
    "match":
      "name": "大飞哥"
   
  ,
  "highlight":
    "pre_tags": "< p class=key style=color:red> ",  
    "post_tags": "< /p> ",  
    "fields":
      "name":
   
 


windows下的Kibana安装1、下载压缩包并解压
此处我将它解压到D盘根目录
2、修改config/kibana.yml文件
注意此文件默认编码格式

追加如下内容
# 默认端口server.port: 5601  
# ES 服务器的地址
elasticsearch.hosts: ["http://192.168.8.102:9200"]  
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
3、启动kibana


4、通过浏览器访问
http://localhost:5601/

5、简单测试


至此,windows下的Kibana安装就成功了。
结束语至此,Elasticsearch掰开揉碎系列的第6篇就结束了,本篇文章中主要要讲解的是:linux下的kibana安装、windows下的kibana安装、使用Kibana操作ES。本篇文章内容有点多,兄弟们加油干吧!!
下一篇我带来的是:analysis-ik中文分词器。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!

    推荐阅读