ElasticSearch系列——Kibana,核心概念

news2024/11/26 17:52:28

ElasticSearch系列——Kibana,核心概念

  • Kibana
    • 下载地址
    • Windows安装
      • 修改配置文件
    • 启动Kibana
      • 验证
  • ES核心概念
    • Index索引
    • Mapping映射
    • Document文档
  • 使用Kibana对ES进行操作
    • 查询所有索引
      • 查询指定索引
    • 创建索引
      • 指定分片和副本数
    • 删除索引
    • 创建映射
    • 查看指定索引的映射信息
    • 映射无法删除
    • 创建文档
      • 不指定文档ID
      • 指定文档ID
    • 文档查询
      • 查询所有文档
      • 查询指定ID的文档
    • 删除文档
    • 更新文档
      • 覆盖更新(更新整个文档)
      • 更新部分字段
    • 文档批量操作
      • 批量新增
    • DSL查询
      • 条件查询
    • 范围查询
    • 前缀查询
    • 匹配查询(通配符查询)
    • 多ID查询
    • 模糊查询
    • 多条件查询
    • 多字段查询
    • 字段分词查询
    • 高亮查询
      • 自定义高亮标签
    • 分页查询
      • 排序
    • 指定字段查询

Kibana

Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

Kibana Navicat是一个针对Elasticsearch mysql的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据

下载地址

https://www.elastic.co/cn/downloads/kibana
这里注意一下你的Kibana版本一定要和ES对应起来

Windows安装

下载完后放置目录解压缩即可

修改配置文件

我们需要设置开启远程访问和配置ES的映射地址端口
我们找到conf目录下的kibana.yaml文件
添加以下配置

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

在这里插入图片描述

启动Kibana

打开bin目录,找到kibana.bat双击启动即可,但是你一定要确保先启动了ES
在这里插入图片描述
启动后如下图:
我们需要访问5601端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证

右击侧边栏,点击Management选择Dev Tools
在这里插入图片描述
点击按钮执行发现有打印说明连接已经成功

在这里插入图片描述

ES核心概念

Index索引

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个商品数据的索引,一个订单数据的索引,还有一个用户数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。

Mapping映射

映射是定义一个文档和它所包含的字段如何被存储和索引的过程。在默认配置下,ES可以根据插入的数据自动地创建mapping,也可以手动创建mapping 。mapping中主要包括字段名、字段类型等

Document文档

文档是索引中存储的一条条数据。一条文档是一个可被索引的最小单元。ES中的文档采用了轻量级的JSON格式数据来表示。

在这里插入图片描述
把他作为数据库看
ES——mysql
Index索引——table表
mapping映射——schema数据库字段
document文档——row数据库表的一行
在这里插入图片描述

使用Kibana对ES进行操作

查询所有索引

GET /_cat/indices?v

在这里插入图片描述

查询指定索引

# 查询某个索引
# products是索引名称
GET /products

创建索引

# 创建索引
# products是索引名称
PUT /products

指定分片和副本数

# 创建索引时指定分片和副本数
# "number_of_shards": 1, 指定分片数为1
# "number_of_replicas": 1 指定副本数为1
PUT /products
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 1
  }
}

删除索引

# 删除索引
DELETE /products

创建映射

一般我们在创建索引时同时创建映射

# 创建索引同时创建映射
# mappings表示映射
# properties表示映射中的字段内容,下面是具体的字段以及类型
# 字符串型:keyword(关键词搜索,不分词),text(全文搜索,分词)
# 数字类型:integer,long
# 小数浮点型:float,double
# 布尔类型: boolean
# 日期类型: date
PUT /products
{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "price":{
        "type": "float"
      },
      "create_time":{
        "type": "date"
      },
      "des":{
        "type": "text"
      }
    }
  }
}

查看指定索引的映射信息

# 查询索引的映射信息
GET /products/_mapping

在这里插入图片描述

映射无法删除

若要删除请直接删除索引

创建文档

不指定文档ID

POST /products/_doc
{
  "name":"辣条",
  "price":2.5,
  "des":"卫龙辣条",
  "create_time":"2022-11-08"
}

指定文档ID

# 创建文档并指定文档的ID
POST /products/_doc/1
{
  "name":"辣条",
  "price":2.5,
  "des":"卫龙辣条",
  "create_time":"2022-11-08"
}

文档查询

查询所有文档

# 查询所有文档
GET /products/_search

查询指定ID的文档

# 文档查询
# 1是文档的ID
GET /products/_doc/1

删除文档

# 删除指定文档
DELETE /products/_doc/1

更新文档

覆盖更新(更新整个文档)

# 覆盖更新
# 先删除在创建
PUT /products/_doc/2
{
  "name":"辣条",
  "price":2.8,
  "des":"老干妈辣条",
  "create_time":"2022-11-07"
}

更新部分字段

# 更新部分字段
POST /products/_doc/2/_update
{
  "doc":{
    "price":5.5
  }
}

文档批量操作

对应关键字:

  1. 新增:index({"index":{"_id":3}})
  2. 更新:update({"update":{"_id":3}})
  3. 删除:delete({"delete":{"_id":3}})

虽然是批量操作但是每一条都是单独运行的!

批量新增

# 文档批量操作 使用_bluk
# {"index":{"_id":3}}表示指定文档ID为3
POST /products/_doc/_bulk
{"index":{"_id":3}}
 {"name":"笔记本","price":6.66,"des":"普通笔记本","create_time":"2022-11-08"}
{"index":{"_id":4}}
 {"name":"舍利子","price":998,"des":"累积功德","create_time":"2022-11-08"}
{"index":{"_id":5}}
 {"name":"假发","price":32.36,"des":"一发遮秃头","create_time":"2022-11-08"}

DSL查询

ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL<DomainSpecified Language> , Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。

有关这部分其实我上篇文章也提到了,不过上篇是基于APIFox的其实查询的JSON就是我们的请求体,大家看请求体就知道了

条件查询

# 条件查询
# query 表示查询
# term 条件的意思
# name 条件查询的Field,字段名称
# value 字段的值
# keyword类型不分词所以要全部查询以匹配
# text类型分词,使用标准分词器,中文单字分词,英文单词分词
GET /products/_search
{
  "query": {
    "term": {
      "name": {
        "value": "假发"
      }
    }
  }
}

在这里插入图片描述

范围查询

  1. gt:大于
  2. gte:大于或等于
  3. ne是不等于
  4. eq是等于
  5. lt小于
  6. lte小于或等于
# 范围查询
GET /products/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 0,
        "lte": 20
      }
    }
  }
}

前缀查询

使用prefix关键字,用于检索含有指定前缀的关键词的相关文档

# 前缀查询
GET /products/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "辣"
      }
    }
  }
}

匹配查询(通配符查询)

使用wildcard关键字

  1. ? : 用于匹配单个任意字符
  2. * : 用于匹配n多个任意字符
# 匹配查询
GET /products/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "辣?"
      }
    }
  }
}
# 匹配查询
GET /products/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "笔*"
      }
    }
  }
}

多ID查询

使用ids关键字,值为数组类型,用来根据一组id获取多个对应的文档

# 多ID查询
GET /products/_search
{
  "query": {
    "ids": {
      "values": ["3","2"]
    }
  }
}

模糊查询

使用fuzzy关键字,注意只能用来查询关键字(keyword)

  • 搜索关键词长度为2不允许存在模糊
  • 搜索关键词长度为3-5允许一次模糊
  • 搜索关键词长度大于5允许最大2模糊
# 模糊查询
GET /products/_search
{
  "query": {
    "fuzzy": {
      "name": "b记本"
    }
  }
}

多条件查询

使用bool关键字配合must,should,must_not

  1. must:所有条件必须同时成立
  2. must_not:所有条件必须同时不成立
  3. should:所有条件中成立一个即可
# 多条件查询
GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "辣条"
            }
          }
        },
        {
          "term": {
            "create_time": {
              "value": "2022-11-07"
            }
          }
        }
      ]
    }
  }
}

多字段查询

使用multi_match关键字
query字段会进行分词然后匹配

# 多字段查询
GET /products/_search
{
  "query": {
    "multi_match": {
      "query": "辣条 老干妈",
      "fields": ["name","des"]
    }
  }
}

字段分词查询

默认字段分词查询会根据你的字段,若是可以分词的就分词查询,若不能分词就不分
使用query_string关键字

GET /products/_search
{
 "query": {
   "query_string": {
     "default_field": "name",
     "query": "辣条"
   }
 } 
}

高亮查询

使用highlight关键字指定高亮的字段
若使用*则表示所有都高亮

"highlight": {
   "fields": {
     "*": {}
   }
 }
# 高亮
GET /products/_search
{
 "query": {
   "query_string": {
     "default_field": "name",
     "query": "辣条"
   }
 },
 "highlight": {
   "fields": {
     "name": {}
   }
 }
}

自定义高亮标签

由于默认使用<em>标签进行高亮,我们也可以自己定义
使用pre_tags设置前置标签
使用post_tags设置后置标签

GET /products/_search
{
 "query": {
   "query_string": {
     "default_field": "name",
     "query": "辣条"
   }
 },
 "highlight": {
   "pre_tags": ["<span class='hight_light'>"],
   "post_tags": ["</span>"], 
   "fields": {
     "name": {}
   }
 }
}

在这里插入图片描述

分页查询

我们使用match_all进行全部搜索的时候使用size关键字设置每一页的大小,使用from关键字设置页码
from的计算公式:(页码-1)*size

# 分页查询
GET /products/_search
{
  "query": {
    "match_all": {
      
    }
  },
  "size": 3,
  "from": 0
}

当我们查询第二页的时候就应该让from设置为3
第三页则是6

排序

使用sort关键字指定需要进行排序的字段设置排序类型即可

  1. desc:降序
  2. asc:升序
# 排序
GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}

指定字段查询

使用_source关键字在数组中设置需要展示的字段

# 指定字段查询
GET /products/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["name","price"]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全基础入门-概念名词

目录 网络安全学习&#xff08;2022.10.23&#xff09; 一、基础入门——概念名词 DNS 脚本语言 后门&#xff08;2022.11.06&#xff09; WEB WEB相关安全漏洞 演示案例 网络安全学习&#xff08;2022.10.23&#xff09; 一、基础入门——概念名词 查询网站&#xff…

【Linux】进程概念与进程状态

文章目录一、什么是进程1、进程概念2、进程描述 -- PCB二、进程的一些基本操作1、查看进程2、结束进程2、通过系统调用获取进程标示符3、通过系统调用创建子进程三、进程状态1、普适的操作系统层面2、具体Linux操作系统层面四、两种特殊的进程1、僵尸进程2、孤儿进程五、进程优…

社科研究中的问卷设计详解

文章目录参考的文献和网站等资源&#xff1a;参考的up主的讲解B站北师大钱婧老师、参考B站up除草姬&#xff1a;参考的书籍查阅过程中给自己补充的问卷基础知识cssci一篇关于兴趣问卷的案例分析看懂这篇论文需要补充的知识点SPSS和Mplus中如何操作参考的文献和网站等资源&#…

C语言从0到1之《三子棋》的实现

&#x1f57a;作者启明星使 &#x1f383;专栏&#xff1a;《数据库》《C语言》 &#x1f3c7;分享一句话&#xff1a; 沉香&#xff1a;差一点&#xff0c;怎么总是差一点 杨戬&#xff1a;一定是练功的时候总是差不多&#xff0c;到了关键的时候就是差一点 大家一起加油&…

Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)

需要源码请点赞关注收藏后评论区留言~~ 一、Application的生命周期 Application是Android的一大组件&#xff0c;在APP运行过程中有且仅有一个Application对象贯穿应用的整个生命周期 打开AndroidMainfest.xml 发现activity节点的上级正是application节点&#xff0c;不过该节…

手把手带你搭建个人博客系统(一)

⭐️前言⭐️ 该web开发系统涉及到的知识&#xff1a; Java基础MySQL数据库JDBC技术前端三件套&#xff08;HTMLCSSJavaScript&#xff09;Servlet 使用到的开发工具&#xff1a; ideavscodetomcatpostmanFiddler 博主将会手把手带你搭建个人博客系统。 因文章篇幅较长&am…

【Spring boot 静态资源处理】

默认静态资源处理 Spring Boot 默认为我们提供了静态资源处理&#xff0c;使用 WebMvcAutoConfiguration 中的配置各种属性。 建议大家使用 Spring Boot 的默认配置方式&#xff0c;如果需要特殊处理的再通过配置进行修改。 如果想要自 己 完 全 控 制 WebMVC &#xff0c;就需…

快速创建django项目管理系统流程

首先创建django project&#xff0c;虚拟环境选择我已经有的虚拟环境&#xff0c;下面是创建后的画面&#xff0c;简单的框架模板&#xff0c;需要配置改动一些代码参数&#xff0c;才能适合我自己的习惯。 这里我经常用到的习惯必须导入的是simpleui库&#xff0c;还有django的…

基于STM32-Socket-Qt 遥控小车(一代)

文章目录一、项目分析1. 项目简介2. 知识储备3. 硬件选择二、STM32部分三、QT部分四、遥控小车演示程序源码一、项目分析 1. 项目简介 本项目本质为客户端与服务器之间的通信&#xff0c;通过发送不同的指令&#xff0c;服务器和客户端进行不同的操作。 客户端&#xff1a;基…

声学特征提取

声学特征提取流程图 语谱图 语谱图的横坐标是时间&#xff0c;纵坐标是频率&#xff0c;坐标点值为语音数据能量。由于是采用二维平面表达三维信息&#xff0c;所以能量值的大小是通过颜色来表示的&#xff0c;颜色深&#xff0c;表示该点的语音能量越强。 语谱图形成过程 …

zabbix监控Linux

1. 环境配置&#xff1a; 主机名主机地址操作系统角色zabbix192.168.188.201Rocky Linux release 8.6zabbix-servernode1192.168.188.111CentOS7zabbix-agent 2. 配置zabbix客户端&#xff1a; 1>. 下载并安装zabbix客户端&#xff1a; [rootnode1 ~]# wget https://mi…

Ubuntu 22.04安装Cuda11.7和cudnn

安装显卡驱动 打开‘软件和更新。 点击附加驱动安装显卡驱动 如果已经安装显卡驱动&#xff0c;请忽略上面的步骤。 安装gcc 新安装的Ubuntu22.04 没有安装gcc&#xff0c;需要安装gcc。在终端输入gcc -version 查看有没有gcc。 执行命令 sudo apt install gcc安装CUDA …

什么是蜂窝移动网络?

文章目录前言移动网络 vs WIFI蜂窝移动通信网蜂窝网络实现移动上网通信网架构总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; 移动网络 vs WIFI 计网课外实验月&#xff0c;我走在宿舍一楼正数着AP有多少个&#xff0c;突然W…

待业将近一个月,晚上11点接到面试邀约电话,我却拒绝了...

前言 一位测试朋友最近一直在找工作&#xff0c;前两天刚拒绝了一个面试。那天晚上11点多&#xff0c;他接到一个HR的面试电话&#xff0c;让他第二天早上10点去公司面试。朋友和HR聊了两句&#xff0c;了解到这位HR经常加班&#xff0c;于是果断拒绝了这个面试。我还为他可惜&…

LongAdder的源码学习与理解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a; 才疏学浅的木子 &#x1f647;‍♂️ 本人也在学习阶段如若发现问题&#xff0c;请告知非常感谢 &#x1f647;‍♂️ &#x1f4d2; 本文来自专栏&#xff1a; Java基础 ❤️ 支持我&#xff1a;&#x1f44d;点赞 &#x1…

Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)

运行有问题或需要源码请点赞关注收藏后评论区留言 一、利用ContentResolver读写联系人 在实际开发中&#xff0c;普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据&#xff0c;比如查看联系人&#xff0c;短信&#…

Linux top命令的cpu使用率和内存使用率

文章目录前言一、cpu使用率1.1 top简介1.2 cpu使用率的来源二、内存使用率2.1 总内存有关的数据2.2 进程使用内存有关的数据2.3 内存使用率的来源三、 pmap参考资料前言 NAMEtop - display Linux processes一、cpu使用率 1.1 top简介 top程序提供当前运行系统的动态实时视图…

网络协议:一文搞懂Socket套接字

本篇内容包括&#xff1a;Socket 套接字的简介、Socket 套接字的分类、Java 中的 Socket 即 java.net.ServerSocket、java.net.Socket 的使用&#xff0c;以及Java 使用套接字 Scoket 编程的Demo。 一、Socket 简介 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、…

Qt编写跨平台RTSP/RTMP/HTTP视频流播放器

一、前言 很早以前就做过这款播放器的入门版本&#xff0c;最开始用的ffmpeg去解析&#xff0c;后面陆续用vlc播放器、mpv播放器来做&#xff0c;毕竟播放器提供的接口使用也很方便&#xff0c;而且功能强大&#xff0c;后面发现播放器主要的应用场景是播放视频文件&#xff0…

安装配置Anaconda3

1.装anaconda&#xff0c;就不需要单独装python了 2、 下载Anaconda Anaconda | Anaconda Distribution 3、 安装Anaconda 其他默认 4、配置Anaconda环境变量 此电脑——属性——高级系统设置——环境变量——path——编辑——新建 C:\ProgramData\Anaconda3 C:\ProgramDa…