什么是Kibana?
Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等,Kibana还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。
安装
Kibana依赖于node,安装kibana前请安装nodejs。
nodejs下载地址:https://nodejs.org/en/download/
Kibana官网地址:https://www.elastic.co/cn/kibana
配置运行
配置
进入安装目录下的config目录,修改kibana.yml文件:
修改elasticsearch服务器的地址:
elasticsearch.url: “http://192.168.130.128:9200”
运行
进入安装目录下的bin目录:
kibana的监听端口是5601
我们访问:http://127.0.0.1:5601
控制台
选择左侧的DevTools菜单,即可进入控制台页面:
在页面右侧,我们就可以输入请求,访问Elasticsearch了。
kibana的控制台,可以对http请求进行简化
使用kibana创建索引
查看索引设置
Get请求可以帮我们查看索引信息,格式:
GET /索引库名
删除索引
删除索引使用DELETE请求
DELETE /索引库名
映射配置
索引有了,接下来肯定是添加数据。但是,在添加数据之前必须定义映射。
什么是映射?
映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等
只有配置清楚,Elasticsearch才会帮我们进行索引库的创建(不一定)
创建映射字段
请求方式依然是PUT
PUT /索引库名/_mapping/类型名称
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
- 类型名称:就是前面将的type的概念,类似于数据库中的不同表
字段名:任意填写,可以指定许多属性。 - type:类型,可以是text、long、short、date、integer、object等
- index:是否索引,默认为true
- store:是否存储,默认为false
- analyzer:分词器,这里的
ik_max_word
即使用ik分词器
PUT test/_mapping/goods
{
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"images": {
"type": "keyword",
"index": "false"
},
"price": {
"type": "float"
}
}
}
查看映射关系
GET /索引库名/_mapping
新增数据
随机生成id
通过POST请求,可以向一个已经存在的索引库中添加数据。
POST /索引库名/类型名
{
"key":"value"
}
示例
POST /test/goods/
{
"title":"华为p8手机",
"images":"http://image.xiaomi.com/f1few2rdsq479g122.jpg",
"price":3800.00
}
通过kibana查看数据:
GET /test/_search
{
"query":{
"match_all": {}
}
}
_source
:源文档信息,所有的数据都在里面。_id
:这条文档的唯一标示,与文档自己的id字段没有关联
自定义id
如果我们想要自己新增的时候指定id,可以这么做:
POST /test/goods/2
{
.....
}
修改数据
把刚才新增的请求方式改为PUT,就是修改了。不过修改必须指定id,
- id对应文档存在,则修改
- id对应文档不存在,则新增
比如,我们把id为3的数据进行修改:
PUT /test/goods/3
{
"title":"苹果手机",
"images":"http://image.apple.com/fsd564werds.jpg",
"price":6000.00,
"stock": 100,
"saleable":true
}
删除数据
删除使用DELETE请求,同样,需要根据id进行删除:
DELETE /索引库名/类型名/id值
查询所有(match_all)
GET /heima/_search
{
"query":{
"match_all": {}
}
}
query
:代表查询对象match_all
:代表查询所有
匹配查询(match)
- or关系
match
类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系
GET /test/_search
{
"query":{
"match":{
"title":"小米电视"
}
}
}
不仅会查询到小米,而且与电视相关的都会查询到,多个词之间是or
的关系。
- and关系
某些情况下,我们需要更精确查找,我们希望这个关系变成and
,可以这样做:
GET /test/_search
{
"query":{
"match": {
"title": {
"query": "小米电视",
"operator": "and"
}
}
}
}
多字段查询(multi_match)
multi_match
与match
类似,不同的是它可以在多个字段中查询
GET /test/_search
{
"query":{
"multi_match": {
"query": "小米",
"fields": [ "title", "subtitle" ]
}
}
}
更多查询请阅读官方文档。