一、Kibana 介绍
Kibana 是一款开源的数据分析和可视化平台,用于和 Elasticsearch 协作。通过 Kinaba 可以对 Elasticsearch 索引中的数据进行搜索、查看、交互操作,可以很方便的利用图标、表格、地图对数据进行多元化的分析和呈现。
Kibana 可以使数据界面化,基于浏览器的界面可让我们快速创建和分享动态数据仪表板来追踪 Elasticsearch 的实时数据变化。
二、Kibana 安装和使用
2.1 下载和安装
# 下载与使用的 elasticsearch 对应的 kibana 版本
docker pull docker.io/kibana:5.6.8# 安装 kibana 容器
# ELASTICSEARCH_URL 指定要监听和统计的ES
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.234.135:9200 --name kibana --restart=always -p 5601:5601 kibana:5.6.8
2.2 测试
# 访问页面
192.168.234.135:5601
三、DSL 语句
DSL 可以帮助我们直接操作 elasticsearch 库中的数据
打开 kibana 的 Dev Tools,建议在 firefox 浏览器打开,它对中文的兼容性更好
# 获取所有索引库信息
GET _cat/indices?v# 删除索引库
DELETE /userinfo# 新增索引库
PUT /userinfo# 添加映射
PUT /user/testinfo/_mapping
{"properties": {"name": {"type": "text","analyzer": "ik_smart","search_analyzer": "ik_smart","store": false},"city": {"type": "text","analyzer": "ik_smart","search_analyzer": "ik_smart","store": false},"age": {"type": "long","store": false},"description": {"type": "text","analyzer": "ik_smart","search_analyzer": "ik_smart","store": false}}
}# 新增文档数据
# /【索引】/【索引库】/【第几个】
PUT /user/testinfo/1
{"name": "小黄","age": 18,"city": "北京","description": "北京的小黄歌"
}
PUT /user/testinfo/2
{"name": "小美","age": 18,"city": "北京","description": "北京的小美"
}
PUT /user/testinfo/3
{"name": "李明","age": 18,"city": "北京","description": "北京的大哥"
}# 获取数据
GET /user/testinfo/1
GET /user/testinfo/2
GET /user/testinfo/3# 直接替换数据,原始数据会被删除
PUT /user/testinfo/1
{"name": "老大"
}# 修改数据
POST /user/testinfo/1/_update
{"doc": {"name": "隔壁老王"}
}# 删除数据
DELETE /user/testinfo/3# 查询数据
GET /user/_search
GET /user/testinfo/_search
GET /user/testinfo/2# Sort 排序
# 根据 age 降序
Get /user/_search
{"query": {},"sort": [{"age": {"order": "desc"}}]
}# 分页
Get /user/_search
{"query": {},"sort": [{"age": {"order": "desc"}}],"from": 0,"size": 2
}################# 过滤搜索# 词项搜索
GET /user/testinfo/_search
{"query": {"term": {"city":"北京"}}
}# 多个词项搜索
GET /user/_search
{"query": {"terms": {"city": ["北京","武汉"]}}
}# 范围过滤
# gte 大于等于 gt 大于
# lte 小于等于 lt 小于
GET /user/_search
{"query": {"range": {"age": {"gte": 10,"lte": 40}}},"sort": [{"age": {"order": "desc"}}]
}# 查询存在address域的数据
GET /user/_search
{"query": {"exists": {"field": "address"}}
}############ 多条件搜索
# must:多条件必须同时满足,等同于 and
# must_not:多个条件必须同时不满足
# should:至少有一个条件满足,等同于or# 搜索在深圳的用户,且年龄在10-30之间
GET /user/_search
{"query": {"bool": {"must": [{"term": {"city": {"value": "深圳"}}},{"range": {"age": {"gte": 10,"lte": 30}}}]}}
}##### 根据某个字符搜索
GET /user/_search
{"query": {"match": {"description": "湖北武汉"}}
}# 搜索前缀
GET /user/_search
{"query": {"prefix": {"name": "赵"}}
}# 多个域匹配
# description|city 有深圳的数据
GET /user/_search
{"query": {"multi_match": {"query": "深圳", "fields": ["city", "description"]}}
}