Skip to main content

kibana

Kibana 安装配置

创建 docker-compse.yml 文件
version: '3'

networks:
es:

services:

kibana:
image: kibana:7.10.1
container_name: kibana
privileged: true
restart: always
volumes:
- ./config/kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
networks:
- es
在对应的文件目录下,创建kibana.yml 文件
#
server.name: kibana
server.host: "0.0.0.0"
# http://ip:9200 TODO 修改为自己的ip
elasticsearch.hosts: [ "http://xxxx.xxxx.xxxx.xxx:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "elastic" # es账号
elasticsearch.password: "xxxxxx" # es密码
i18n.locale: zh-CN # 中文
运行 启动命令
 docker-compose up -d

验证

浏览器输入网址:http://xxxx.xxxx.xxxx.xxxx:5601 输入账号密码

Kibana开发工具使用

1.在右侧将看到和启动完ES后在浏览器输入localhost:9200相同的内容
输入:GET /
2.创建索引
POST cmcc/_create/1
{
"name":"zhangsan",
"ange":27,
"location":"SG",
"province":"hebei",
"county":"china",
}

说明:因为7版本之后,ES不再支持一个索引(index)可以创建多个类型(type),所以cmcc/后边不再需要写入类型名称,而是统一使用_create代替即可,同样的,查询操作使用_doc代替即可,右侧看到如下图所示类似形式表示创建成功
3.查看刚才创建的索引
GET cmcc/_doc/1
4.删除索引
DELETE cmcc
5.修改数据
PUT cmcc/_doc/1
{
"name":"zhangsan",
"ange":27,
"location":"SG",
"province":"hebei",
"county":"china",
"xingbie":"nv"
}

这里我们修改了"name"值,把"province""conutry"值改为中文,并添加了一个新属性"xingbie",执行之后我们再次执行获取数据内容命令GET cmcc/_doc/1,如下,可以看到数据已经被修改,版本号变成了2
6.bulk方法批量插入数据
POST _bulk
{"index":{"_index":"cmcc"}}
{"name":"points","age":23,"location":"PG","province":"jiangsu","country":"china","xingbie":"mela"}
{"index":{"_index":"cmcc"}}
{"name":"points","age":23,"location":"PG","province":"jiangsu","country":"china","xingbie":"mela"}
{"index":{"_index":"cmcc"}}
{"name":"points","age":23,"location":"PG","province":"jiangsu","country":"china","xingbie":"mela"}

使用POST方法,然后每一条数据的格式是一致的,首先第一行输入 {"index":{"_index":"cmcc"}} ,也就是索引名称,第二行输入要插入的完整数据,这里特别提醒下,插入的这条数据不能使用刚才创建数据时的那种多行形式,只能使用没有回车的一条数据,否则会报错如下:
{
"error": {
"root_cause": [
{
"type": "json_e_o_f_exception",
"reason": "Unexpected end-of-input: expected close marker for Object (start marker at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@154857fc; line: 1, column: 1])\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@154857fc; line: 1, column: 3]"
}
],
"type": "json_e_o_f_exception",
"reason": "Unexpected end-of-input: expected close marker for Object (start marker at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@154857fc; line: 1, column: 1])\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@154857fc; line: 1, column: 3]"
},
"status": 500
}

执行完毕后,我们再次获取数据看一下,输入:GET cmcc/_search
7.按照条件查询
GET cmcc/_search
{
"query":{
"match":{
"province":"guangzhou"
}
}
}

也就是查询数据中属性"province""广州"的数据,结果如下:
8.当同一个属性满足逻辑或时的查询
GET cmcc/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"age": 21
}
},
{
"match": {
"age": 23
}
}
]
}
}
}

这里是查询属性"age"等于21或者23的数据,如果看着不舒服,我们可以点击运行按钮右侧的扳手,选择Auto indent,输入效果就会直观一些,

其中,116行固定输入"query"117行固定输入"bool"118行输入为"should",表示是逻辑或的关系,120行为"match"121行为所要查询的属性名与属性值
9.多条件查询
GET cmcc/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"age": 21
}
},
{
"match": {
"county": "china"
}
}
]
}
}
}

这里是查询属性"age"等于23,并且属性"country"为“中国”的数据,这里和上一条查询的关键区别就在于第98行由"should"改为"must",执行结果如下:
10.范围查询并进行排序
GET cmcc/_search
{
"query": {
"range": {
"age":{
"get":20,
"lte":25
}
}
},
"sort":[
{
"age":{
"order":"desc"
}
}
]
}

这里,151行使用"range"152行输入属性名,153"gte"154"lte"表示查询属性"age"20-25范围的数据,然后158行表示排序,160行表示排序的属性是"age"161“order”表示排序为倒序"desc",执行结果如下:
11.聚合查询
GET cmcc/_search
{
"size":0,
"aggs":{
"age":{
"range":{
"field":[
{
"from":20,
"to":23
},{
"from":23,
"to":25
},{
"from":25,
"to":30
}
]
}
}
}
}

使用聚合查询,格式是:170行使用"aggs"171行为所要查询的属性名,这里查询"age"173"field"后边输入属性名,174行为范围,分别在"from""to"后边输入要分段的范围,这条请求实现的是统计属性"age"按照20-23,23-25,25-30划分的数据条数分别为多少,如果想要查看满足条件的数据,则将169"size"值置为非零数,貌似应大于查询条数,具体还没查,这里是不显示满足条件的具体数据,直接置零即可,执行结果如下:
12.聚合查询的另外一个示例
GET cmcc/_search
{
"size":2
"aggs":{
"province":{
"terms":{
"field":"province.keyword",
"size":5
}
}
}
}

这条请求是查询属性"province"的统计结果,这里是统计5条数据,并显示其中2条,并在197"field"后输入属性名,并在其后添加 .keyword,查询结果如下

Docker 启动命令

docker run \
--name kibana \
--privileged=true \
-p 5601:5601 \
-v /mydata/kibana/config:/usr/share/kibana/config \
-d registry.cn-beijing.aliyuncs.com/yyb-ricky/kibana:7.10.1

网页操作查看索引数据

  1. 想要在kibana中以界面列表的形式查案数据,需要用到index pattern功能.在左侧栏中找到Analytics下的Discover

  2. 选择后进行Create index pattern操作,在Name中填写你创建的索引名,也就是表名,我创建的索引名为deviceinfo. 填好之后选择Create index pattern进行创建

另一种方法

  1. 也可以到管理界面中找到index pattern创建 Stack Management -->Kibana–>Index Patterns

索引生命周期(设置索引自动删除,可以关联索引模版使用),索引模版(创建指定的索引结构)

Kibana创建索引生命周期有Bug,参考这个文章

需要手动添加 action里面的删除动作 "delete":