博客 ES学习看这一篇文章就够了3

ES学习看这一篇文章就够了3

   数栈君   发表于 2023-07-21 10:23  418  0

第五章 高级查询(Kibana)
第1节 Kibana安装
1.1 Kibana简介

1
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据.使用Kibana,可以通过各种图表进行高级数据分析及展示
1.2 Kibana下载

官网地址
1
https://www.elastic.co/cn/kibana
华为云地址
1
https://mirrors.huaweicloud.com/kibana/6.3.2/kibana-6.3.2-windows-x86_64.zip
1.3 Kibana安装

1
2
3
4
1、将下载的kibana-6.3.2-windows-x86_64.zip压缩包解压到指定文件夹下
2、在bin目录下D:\soft\kibana-6.3.2-windows-x86_64\bin找到kibana.bat
3、双击运行即可
4、浏览器访问 http://localhost:5601/进入 Dev Tools选项
第2节 Kibana使用
2.1 基本操作

2.1.1 查看集群健康状态

1
GET /_cat/health?v
2.1.2 查看节点状态

1
GET /_cat/nodes?v
2.1.3 查看索引信息

1
GET /_cat/indices?v
2.1.4 创建索引

1
2
3
4
5
6
7
8
1. 命令 PUT /book

2. 返回结果
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "book"
}
2.1.5 删除索引

1
2
3
4
5
1. 命令 DELETE /book
2. 返回结果
{
"acknowledged": true
}
2.1.6 向文档中添加数据

1
2
3
4
5
PUT /book/doc/1
{
"name":"李雷",
"age":18
}
2.1.7 查看文档类型

1
2
3
4
5
6
7
GET /book/doc/_mapping

GET: 请求方式
book: 索引(相当于MYSQL数据库的库名)
doc : 类型(相当于数据库的表名)
_mapping: ES的关键字查询文档类型

2.1.8 查看索引中的文档(根据ID查询)

1
GET /book/doc/1
2.1.9 更新索引中的文档

1
2
3
4
5
6
7
8
9
10
11
12
POST /book/doc/1/_update
{
"doc":{
"name":"韩梅梅"
}
}

POST : 请求方式
book : 索引名称
doc : 类型
1 : 文档id
_update: 关键字,用于更新
2.1.10 删除索引中的文档

1
DELETE /book/doc/2
2.1.11 对索引中的文档进行批量操作

1
2
3
4
5
6
7
POST /book/doc/_bulk
{"index":{"_id":"3"}}
{"name": "John Doe" }
{"index":{"_id":"4"}}
{"name": "Jane Doe" }

_bulk: 批量操作
2.2 高级查询

2.2.1 数据导入

数据地址
1
https://github.com/macrozheng/mall-learning/blob/master/document/json/accounts.json
导入命令(批量)
1
2
POST /bank/account/_bulk
//这里放上面的数据地址中的数据
2.2.2 高级查询

2.2.2.1 简单搜索

搜索全部(match_all)
1
2
3
4
GET /bank/_search
{
"query": { "match_all": {} }
}
分页搜索(from表示偏移量,从0开始,size表示每页显示的数量)
1
2
3
4
5
6
GET /bank/_search
{
"query": { "match_all": {} },
"from": 0,
"size": 10
}
搜索排序(sort)
1
2
3
4
5
6
7
GET /bank/_search
{
"query": { "match_all": {} },
"sort": { "balance": { "order": "desc" } }
}

使用sort关键字 以balance字段排序,设置order属性的值为desc倒叙输出
搜索并返回指定字段内容(_source)
1
2
3
4
5
6
7
GET /bank/_search
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}

_source: 将要查询出来的属性设置到_source数组中
2.2.2.2 条件搜索(match)

搜索出account_number为20的文档
1
2
3
4
5
6
7
8
GET /bank/_search
{
"query": {
"match": {
"account_number": 20
}
}
}
搜索address字段中包含mill的文档
1
2
3
4
5
6
7
8
9
10
11
12
GET /bank/_search
{
"query": {
"match": {
"address": "mill"
}
},
"_source": [
"address",
"account_number"
]
}
注意: 对于数值类型match操作使用的是精确匹配,对于文本类型使用的是模糊匹配

2.2.2.3 短语匹配搜索(match_phrase)

搜索address字段中同时包含mill和lane的
1
2
3
4
5
6
7
8
GET /bank/_search
{
"query": {
"match_phrase": {
"address": "mill lane"
}
}
}
2.2.2.4 组合搜索(bool)

同时满足(must)
搜索address字段中同时包含mill和lane的文档
1
2
3
4
5
6
7
8
9
10
11
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
满足其中任意一个(should)
搜索address字段中包含mill或者lane的文档
1
2
3
4
5
6
7
8
9
10
11
GET /bank/_search
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
同时不满足(must_not)
搜索address字段中不包含mill且不包含lane的文档
1
2
3
4
5
6
7
8
9
10
11
GET /bank/_search
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
满足其中一部分,并且不包含另一部分(组合must和must_not)
搜索age字段等于40且state字段不包含ID的文档
1
2
3
4
5
6
7
8
9
10
11
12
13
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
2.2.2.5 过滤搜索(filter)

过滤出balance字段在20000~30000的文档
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}

2.2.2.6 搜索聚合(aggs)

对state字段进行聚合,统计出相同state的文档数量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

GET /bank/_search
{
"aggs":{
"group_by_state":{
"terms":{
"field":"state.keyword"
}
}
}
}


aggs: 分组聚合关键字
group_by_state: 聚合条件名字,自定义
terms : 关键字,查询某个字段里含有多个关键词的文档
keyword: state是一个关键字类型

对balance取平均值
1
2
3
4
5
6
7
8
9
10
11
GET /bank/_search
{
"size": 0,
"aggs":{
"avg_balance":{
"avg":{
"field": "balance"
}
}
}
}
对state字段进行聚合,统计出相同state的文档数量和balance平均值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

GET /bank/_search
{
"size": 0,
"aggs":{
"group_by_state":{
"terms":{
"field":"state.keyword"
}
},
"avg_balance":{
"avg":{
"field": "balance"
}
}
}
}

具体ES的聚合函数请参考官方文档这里不再讲解

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群