Kibana与DSL语句

在查找elasticsearch时,我们可以使用elasticsearch-head进行数据查找,但是由于其功能单一,并且无法生成复杂的统计报表。因此,今天介绍一个能够实现对日志进行实时分析的工具——Kibana。

Kibana是一款开源的数据分析和可视化平台,我们可以使用Kibana对elasticsearch索引中的数据进行搜索、查看和交互,甚至是利用图表及地图的方式对数据进行多元化地分析和呈现。

1. Kibana 5.6.8的下载安装

同样地,我们使用docker进行下载安装。

# 镜像下载,这里需要下载和elasticsearch对应的版本,因为笔者elasticsearch版本为5.6.8,所以这里Kibana版本也是5.6.8
docker pull docker.io/kibana:5.6.8
# 安装kibana容器,并设置为开机自启动
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.137.118:9200 --name kibana --restart=always -p 5601:5601 kibana:5.6.8

访问http://192.168.137.118:5601

在这里插入图片描述

2. DSL语句

索引操作

查询所有的索引:GET /_cat/indices?v

删除某个索引:DELETE /user

创建索引:PUT user

或者更详细地配置:

  • number_of_shards 分片数量;
  • number_of_replicas 副本数量。
PUT user
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 2
      }
}

映射操作

添加映射:

PUT user/userinfo/_mapping
{
    "properties": {
        "name": {
			"type": "text",
			"analyzer": "ik_smart",
			"store": false,
			"search_analyzer": "ik_smart"
		},
        "city": {
			"type": "text",
			"analyzer": "ik_smart",
			"store": false,
			"search_analyzer": "ik_smart"
		},
		"age": {
			"type": "long",
			"store": false
		},
		"description": {
			"type": "text",
			"analyzer": "ik_smart",
			"store": false,
			"search_analyzer": "ik_smart"
		}
      }
}

查看映射:GET user/userinfo/_mapping

添加数据

保存一篇文档到索引当中去 (相当于插入一条记录到一个数据库表当中)

PUT user/userinfo/1
{
	"name":"张三丰",
	"age":32,
	"city":"广州",
	"description":"加班狂人"
}

保存文档到索引当中,不给id,会自动分配一个id

POST user/userinfo/
{
	"name":"洪世贤",
	"age":35,
	"city":"上海",
	"description":"java架构师"
}

查询数据

获取某个索引中某个类型某个id的数据:GET user/userinfo/1或者GET hello/job/1?_source

获取某个索引中某个类型某个id的某列数据:GET hello/job/1?_source=title

获取某个索引中某个类型某个id的某几列数据:GET hello/job/1?_source=title,city

更新数据

采用的是覆盖的方式进行文档的更新。 执行下面的操作后,发现之前的description列消失了。

PUT user/userinfo/1
{
	"name":"李信",
	"age":36,
	"city":"深圳"
}

如果想要更新某个字段:

POST user/userinfo/1/_update
{
  "doc":{
    "name":"李信",
	"age":36,
	"city":"深圳"
  }
}

删除数据

删除一条记录:DELETE user/userinfo/1

高级查询

搜索排序:

GET /user/userinfo/_search
{
	"query": {
		"match_all": {}
	},
	"sort":{
		"age":{
			"order": "desc"
		}
	}
}

分页查询:

GET /user/userinfo/_search
{
	"query": {
		"match_all": {}
	},
	"sort":{
		"age":{
			"order": "asc"
		}
	},
	"from": 0,
	"size": 1
}

过滤查询:

term词项搜索主要用于分词精确匹配,如字符串、数值、日期等

GET /user/userinfo/_search
{
	"query": {
		"term": {
			"age":{
				"value": 35
			}
		}
	}
}

多个term词项搜索

GET /user/userinfo/_search
{
	"query": {
		"terms": {
			"age": [35, 36]
		}
	}
}

范围过滤查询:

range过滤允许按照指定范围查找一批数据。

GET /user/userinfo/_search
{
	"query": {
		"range": {
			"age": {
				"gte": 30,
				"lte": 40
			}
		}
	}
}

exists过滤查询:

查找拥有某个域的数据

GET /user/userinfo/_search
{
	"query": {
		"exists": {
			"field": "description"
		}
	}
}

bool过滤:

合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:

  • must:多个查询条件的完全匹配,相当于and;
  • must_not:多个查询条件的相反匹配,相当于not;
  • should:至少有一个查询条件匹配,相当于or。
GET /user/userinfo/_search
{
	"query": {
		"bool": {
			"must": [
			  {
  				"term": {
  					"age": 35
  				}
			  }
			]
		}
	}
}

查询所有

GET /user/userinfo/_search
{
  "query": {
    "match_all": {}
  }
}

根据某个字符搜索

GET /user/userinfo/_search
{
  "query": {
    "match": {
      "description": "架构"
    }
  }
}

根据字段前缀查询

GET /user/userinfo/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "洪"
      }
    }
  }
}

根据多个字段查询

GET /user/userinfo/_search
{
  "query": {
    "multi_match": {
      "query": "java",
      "fields": [
        "name",
        "description"
        ]
    }
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值