SpringBoot+ElasticSearch7.12.1+Kibana7.12.1简单使用

news2024/11/30 0:41:12

案例简介

        本案例是把日志数据保存到Elasticsearch的索引中,并通过Kibana图形化界面的开发工具给查询出来添加的日志数据,完成从0到1的简单使用

ElasticSearch职责用法简介

ElasticSearch用在哪

        ElasticSearch在我这个案例中,不是用来缓解增删改查这4个操作的压力的(有些项目可能用来缓解查询的速度,压力,我这个项目没用到),是专门用来记录日志的,所以这就不像Redis,RabbitMQ一样,好理解,因为Redis、RabbitMQ是专门用来缓解业务操作压力的。

        ElasticSearch常用在日志管理中,原先项目的日志管理可能用的logback,保存到一个日志文件中,有问题了就打开看看,但项目的并发高了,就意味着日志就多,日志文件就大,几百兆的日志文件打开都不好打开,就算打开,也不好定位问题,就算是用MySQL表,数据量大了也不好处理,所以就用ElasticSearch专门存日志数据,管理日志。

ElasticSearch的一些简单概念

        ElasticSearch可以像MySQL那样存储数据,那这里面的概念就需要捋一下,MySQL存的数据在数据库、表中,ElasticSearch对应的就是索引、文档,只不过ElasticSearch7.X以及以后的版本,文档不能再自定义,只有默认的_doc,所以能自己命名的只有索引(对于一个新的工具,里面有一些新的概念,肯定得学,这没办法)

        ElasticSearch的查询语句格式和返回的数据格式都是JSON,所以这就增加了学习的成本,但不用全部都会,只需要知道怎么把springboot项目的日志保存到ElasticSearch中,然后在图形化界面程序Kibana中去查询到刚保存在ElasticSearch的日志就可以了

ElasticSearch在Kibana中怎么用

ElasticSearch的命令有
GET(查数据)、POST(创建和修改)、PUT(更新和创建)、DELETE(删除)

这4类之分,这4个命令关键字在Kibana的开发工具中使用的话必须大写

创建

PUT /students
{
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "age": { "type": "integer" },
      "phone": { "type": "keyword" }
    }
  }
}

PUT /students这个命令就是创建名为students的索引(数据都存这里)
mappings是定义索引的字段和数据类型
properties是包含索引中所有字段的定义
剩下的就是三个字段,以及三个字段的类型,keyword是表示精确匹配和聚合,也就是说,往里面添加数据就按照这三个定义好的字段以及类型添加就可以了

添加

POST /students/_doc
{
  "name": "张三",
  "age": 18,
  "phone": "12345678910"
}

POST /students/_doc就是往刚才创建好的索引里面添加数据(7.0以后的版本都是默认_doc,不能自定义,students是索引名字,对应mysql的数据库,_doc是文档名字,对应mysql的表),剩下就是数据了

查询

GET /students/_search 
{
  "query" : { "match_all" : {}}
}

GET /students/_search是查询命令,
_search是查询的关键字,意思是执行搜索操作
query是指定查询条件
match_all是基本搜索,就是查询所有

修改

POST /students/_update/5QexW5IBczl1l0mGGalG
{
  "doc": {
    "age": 20
  }
}

POST /students/_update/5QexW5IBczl1l0mGGalG是根据id进行修改
doc是要更新的字段和新值,里面就是具体的字段值

删除

DELETE /students/_doc/5QexW5IBczl1l0mGGalG

SpringBoot和ElasticSearch结合简单使用

pom.xml文件坐标

        <!-- Spring Data Elasticsearch -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

        <!-- Elasticsearch Client -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.12.1</version>
        </dependency>

配置文件

# ElasticSearch配置
spring.elasticsearch.rest.uris=http://127.0.0.1:9200

接口

往ElasticSearch里面添加数据的接口(对,就这个简单)

ElasticsearchRepository<Log, Long>,Log是日志文件对象,Long是日志主键类型

@Component
public interface LogElasticSearch extends ElasticsearchRepository<Log, Long> {
}

Log日志类

@Document(indexName = "logbill")        //logbill为索引名字,全部小写,不能大写

@Field(type = FieldType.Text)  //指定字段的类型,不写的话就是自动识别类型

@Data
@Entity
@Document(indexName = "logbill")//索引名字,全部小写
@Table(name = "log")
public class Log implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY,generator = "JDBC")
    private Long id;

    @Column
    @Field(type = FieldType.Text)
    private String ipv4;

    @Column
    @Field
    private String ipv6;

    @Column
    @Field
    private String controller;

    @Column
    @Field
    private String method;

    @Column
    @Field
    private String url;

    @Column
    @Field
    private String name;

    /**
     * 调用时间
     */
    @Column
    @Field(type = FieldType.Date)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date time;

    /**
     * 逻辑删除
     */
    @Column
    @Field(type = FieldType.Integer)
    private Integer deleted;

    public Log() {
    }

    public Log(String ipv4, String ipv6, String controller, String method, String url, String name, Date time, Integer deleted) {
        this.ipv4 = ipv4;
        this.ipv6 = ipv6;
        this.controller = controller;
        this.method = method;
        this.url = url;
        this.name = name;
        this.time = time;
        this.deleted = deleted;
    }
}

调用

在需要往ElasticSearch里面添加数据的地方,注入刚才那个接口,然后再调用save方法,这个data就是Log类型的,就可以了

    @Autowired
    private LogElasticSearch logElasticsearch;
logElasticsearch.save(data);

最后再查询一下

GET /logbill/_search
{
  "query" : { "match_all" : {}}
}

总结

以上就完成了ElasticSearch的简单使用,从0到1的过程已经完成,至于以后用更加复杂的操作,那就看情况了,其实难点还是ElasticSearch的查询语句全部是JSON格式的,刚开始不太好接受,习惯了就好,有什么不懂得可以评论下,看到会回复

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

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

相关文章

牛市以一个什么视角看它?

这波指数行情连续上涨&#xff0c;我说过我没有任何情绪波动&#xff0c;我不想称之为牛市&#xff0c;而是一个增量周期&#xff0c;这样的话我的语言里尽量去除一些欲望和情绪的表达&#xff0c;有利于去给大家讲一些股市的客观存在规律&#xff1b;我们知道熊市的本质是什么…

重庆数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

重庆作为西南地区的重要工业基地&#xff0c;正积极探索和实践数字孪生、工业互联网及可视化技术在智能制造领域的深度融合&#xff0c;致力于打造新型工业化智能制造工厂&#xff0c;为制造业的高质量发展注入强劲动力。 在重庆的智能制造工厂中&#xff0c;数字孪生技术被广…

为什么要学习大模型?AI在把传统软件当早餐吃掉?

前言 上周末在推特平台上有一篇写在谷歌文档里的短文&#xff0c;在国外的科技/投资圈得到了非常广泛的浏览&#xff0c;叫做 The End of Software&#xff08;软件的终结&#xff09;&#xff0c; 作者 Chris Paik 是位于纽约市的风险投资基金 Pace Capital 的创始合伙人&…

【预备理论知识——2】深度学习:线性代数概述

简单地说&#xff0c;机器学习就是做出预测。 线性代数 线性代数是数学的一个分支&#xff0c;主要研究向量空间、线性方程组、矩阵理论、线性变换、特征值和特征向量、内积空间等概念。它是现代数学的基础之一&#xff0c;并且在物理学、工程学、计算机科学、经济学等领域有着…

字符串和字符数组(2)

6.求字符串长度 C语言中有一个库函数叫strlen&#xff0c;这个函数是专门用来求字符串长度的。strlen的使用需要包含一个头文件string.h。 strlen函数统计的是字符串中\0之前的字符个数&#xff0c;所以传递给strlen函数的字符串中必须得包含\0. 请看代码&#xff1a; #inc…

AFSim仿真系统 --- 系统简解_04 Mystic(“情报处理模块”或“智能决策支持系统”)

Mystic应用 Mystic应用&#xff08;Mystic&#xff09;是一个主要的WSF应用程序&#xff0c;用于可视化模拟结果和统计数据。 当在场景中提供event_pipe命令块时&#xff0c;模拟结果将被记录。event_pipe块会创建AFSIM事件录制文件&#xff08;.aer&#xff09;&#xff0c;…

家政服务|基于springBoot的家政服务平台设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数…

璞华科技×珠海采筑:通过SRM系统实现采购管理一体化和精细化

SRM供应商关系管理应该怎么做&#xff1f;如何实现采购管理一体化&#xff1f;近日&#xff0c;聚焦建材采购交易领域的服务商珠海采筑和SRM系统提供商璞华科技通过合作给出了一个现实的回答&#xff1a;通过SRM系统&#xff0c;聚焦使用者视角&#xff0c;以数据为主线&#x…

二分算法详解

1. 二分查找 704. 二分查找 这是一道单纯的朴素二分模版题&#xff0c;当 left right 时的这种情况也是需要考虑的&#xff0c;因为不排除数组中只有一个数的情况&#xff0c;或者是二分到数组中只剩一个数的情况&#xff0c;所以循环条件要写 left < right class Soluti…

批量复制文件技巧:高效管理,一键复制至指定位置

当需要处理大量文件时&#xff0c;批量复制功能能显著提升工作效率。通过文件管理器或专业的文件处理软件&#xff0c;用户可以一次性选择多个文件或文件夹进行复制操作&#xff0c;无需逐个手动操作&#xff0c;大大节省了时间。还可以实现更复杂的批量处理任务。 1.打开“文件…

Qt开发技巧(十四)文字的分散对齐,设置动态库路径,进度条控件的文本,文件对话框的卡顿,滑块控件的进度颜色,停靠窗体的排列,拖拽事件的坑

继续讲一些Qt开发中的技巧操作&#xff1a; 1.文字的分散对齐 有时候需要对文本进行分散对齐显示&#xff0c;相当于无论文字多少&#xff0c;尽可能占满整个空间平摊占位宽度&#xff0c;但是在对支持对齐方式的控件比如QLabel调用 setAlignment(Qt::AlignJustify | Qt::Align…

移动硬盘无法读取?详解原因与数据恢复方案

一、移动硬盘无法读取现象描述 在日常生活中&#xff0c;移动硬盘作为我们存储和传输数据的重要工具&#xff0c;扮演着不可或缺的角色。然而&#xff0c;有时我们会遇到移动硬盘无法读取的情况&#xff0c;这给我们的数据使用带来了极大的困扰。当我们将移动硬盘连接到电脑或…

LLM大模型学习精要系列(一):掌握基础,开启大模型之旅

1.前言 1.1 基础模型研究 2023 年&#xff0c;随着 LLM 技术的发展&#xff0c;中国模型研究机构的开源模型迎来了爆发式的增长&#xff1a; 2023 年 3 月&#xff0c;智谱 AI 首先在魔搭社区发布了 ChatGLM-6B 系列&#xff0c;ChatGLM-6B 是一个开源的、支持中英双语问答的…

【EXCEL数据处理】000001 案列 条件格式之大于,小于,介于,等于。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。

【EXCEL数据处理】000001 案列 条件格式之大于,小于,介于,等于。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来&#xff0c;方便查看。 &#x1f4da;一、直接上案例 &#x1f4d6;1.EXCEL条件格式之大于,案列。标记值大于1500000的值为粉红色。 &a…

【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升

各位好&#xff0c;今天小编给大家带来一款新的高清重置MOD&#xff0c;本次高清重置的游戏叫《重返德军总部2009》2009年发布&#xff0c;我相信很多玩家已经玩过了&#xff0c;如果你还没有玩过我也可以和你简单介绍一下剧情&#xff0c;这款游戏故事背景接续在《重返德军总部…

memset二维数组

1135 用 sizeof d sizeof d[] sizeof N*4 都是错误的。 void dijkstra(int s,int d[]) {memset(d,0x3f,N*4);memset(st,0,sizeof st);d[s]0;priority_queue<PII,vector<PII>,greater<PII>>q;q.push({0,s});while(q.size()){auto tq.top();q.pop();in…

AI大模型开发智能机票助手源码

智能机票助手&#xff1a;使用 Spring AI Alibaba 构建 在本篇文章中&#xff0c;我们将探讨如何使用 Spring AI Alibaba 框架来构建一个智能机票助手。这个助手将能够帮助用户完成机票预订、解答问题、改签和取消等服务。 项目概述 智能机票助手的目标是利用 AI 技术来提升…

【数学分析笔记】第4章第4节 复合函数求导法则及其应用(3)

4. 微分 4.4 复合函数求导法则及其应用 【例4.4.9】向斜向上方向抛一个物体&#xff0c;当 t 0 t0 t0时&#xff0c;水平速度与垂直向上的速度分别为 v 1 v_1 v1​和 v 2 v_2 v2​&#xff0c;问在什么时刻速度的方向是水平的&#xff1f; 【解】该物体画出来的轨迹是抛物线…

【Canvas与艺术】金属底座洞眼红心按钮

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金属底座洞眼红心按钮</title><style type"text/css&q…

校企合作必备无人机兴趣班技术详解

校企合作中的无人机兴趣班技术详解&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、合作背景与目标 随着无人机技术的飞速发展&#xff0c;无人机在航拍、农业、环境监测、应急救援等多个领域展现出巨大的应用潜力。市场对无人机专业人才的需求日益增长&#xff0c;…