自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 Swagger 2 到 Swagger 3 迁移

摘要 本文详细介绍了从Swagger 2迁移到Swagger 3的完整过程。迁移主要由于Spring Boot 3.x升级、Jakarta EE变更、Springfox停止维护等因素。迁移步骤包括:1)更新依赖项,移除Springfox并添加SpringDoc和Swagger 3相关依赖;2)修改配置文件,调整配置前缀和结构;3)重写配置类,改用OpenAPI和Info类;4)迁移注解,将控制器和模型注解从Swagger 2格式转换为Swagger 3格式。

2026-04-09 08:00:00 385

原创 SpringAI MCP

摘要 SpringAI MCP(模型上下文协议)是一种标准化协议,作为AI模型与外部工具交互的桥梁。它采用客户端-服务器架构,通过注解将外部功能封装为标准化工具,由MCP客户端发起请求,服务器处理后返回结构化结果。该协议支持多种传输方式,包含工具发现、标准化调用、结果处理等完整流程,并内置安全验证机制。开发环境需JDK17+、Spring Boot 3.4.5等组件,通过Maven依赖配置实现MCP服务端和客户端的集成。协议简化了AI调用外部服务的过程,使开发者无需关注底层实现细节。

2026-04-09 08:00:00 558

原创 解决 Spring Boot 3 + Spring AI 实现 AI 助手的常见问题

本文探讨了Spring Boot 3整合Spring AI实现AI助手时遇到的常见问题及解决方案。主要解决了两大问题:一是用户聊天记录隔离问题,通过实现用户认证、设计包含用户ID的Redis Key结构以及实现用户专属的聊天历史管理来确保隐私隔离;二是服务器重启后上下文丢失问题,通过创建RedisChatMemory类实现持久化存储,替代默认的内存存储方式。文章详细介绍了具体实现代码,包括用户认证校验、Redis Key设计、聊天历史获取与删除方法,以及基于Redis的聊天记忆持久化方案

2026-04-08 08:00:00 451

原创 SpringBoot 3 整合 Swagger 3

本文详细介绍了在SpringBoot 3.x中整合Swagger 3的完整流程。主要内容包括:1) 技术栈版本要求(Spring Boot 3.3.0 + Java 17+);2) 通过SpringDoc OpenAPI和Knife4j实现API文档自动生成;3) 详细配置步骤,包括依赖添加、application.yml配置、创建配置类;4) 控制器和模型类的注解使用说明;5) 最终通过Knife4j提供的增强界面访问API文档。该方案支持API文档访问控制,兼容Spring Boot 3.x特性

2026-04-08 08:00:00 540

原创 SpringBoot3 整合 SpringAI 实现ai助手(记忆)

本文介绍如何使用Spring Boot 3整合Spring AI实现具有记忆功能的AI助手。项目采用Spring Boot 3.3.0、Java 17、Redis 6.0+等技术栈,支持用户会话隔离和30天对话历史持久化。主要内容包括:1)环境准备,需安装JDK 17+、Redis、MySQL等;2)项目初始化,通过Spring Initializr创建项目并配置Maven依赖;3)核心配置,包括application.yml文件设置和Redis配置类实现。项目实现了基于Redis的对话记忆存储,使用Spr

2026-04-07 22:20:39 1727 6

原创 Spring AOP切面 + 自定义权限注解实现权限校验

Spring AOP切面 + 自定义权限注解实现权限校验

2025-05-10 07:00:00 611

原创 Docker 部署前端(Nginx)

使用Docker部署前端项目

2025-04-25 07:15:00 1870

原创 Docker部署后端

使用Docker部署后端项目

2025-04-25 07:00:00 1108

原创 封装获取分页条件为方法

将分页查询方法中的获取查询条件封装为一个方法,不仅能够简化代码,也增强了代码的复用性。

2025-04-03 15:31:56 433

原创 使用若依的字典(dict)

若依框架中字典(dict)的使用

2025-04-03 07:00:00 5062

原创 ElasticSearch 聚合之Java客户端实现聚合

ElasticSearch 聚合之Java客户端实现聚合

2025-04-02 08:03:06 966

原创 ElasticSearch 聚合之DSL实现聚合

ElasticSearch 聚合之DSL实现聚合

2025-04-02 08:02:58 612

原创 ElasticSearch JavaRestClient查询之高亮显示

ElasticSearch JavaRestClient查询之高亮显示

2025-04-01 09:00:00 1064

原创 ElasticSearch 聚合之聚合的分类

对海量文档数据进行统计分析和运算类比关系型数据库中的聚合函数(如COUNTAVGSUM),但功能更强大。

2025-04-01 09:00:00 1259

原创 ElasticSearch JavaRestClient查询之排序和分页

ElasticSearch JavaRestClient查询之排序和分页。

2025-03-31 14:58:03 1114

原创 ElasticSearch JavaRestClient查询之构建查询条件

QueryBuilders工具类提供构建所有ES查询的静态方法,与DSL语法一一对应。

2025-03-31 14:56:55 768

原创 ElasticSearch JavaRestClient查询之快速入门

构建并发起请求:这一步主要包括构建请求对象和设置查询参数。解析查询结果:获取到查询结果后,如何从中提取出我们关心的数据。通过 Java Rest Client,我们可以方便地构建和发送 Elasticsearch 查询请求。构建请求对象:创建,并设置索引库名。构建查询条件:通过配置查询条件、分页、排序等。发送请求:使用方法发送请求,获取查询结果。解析查询结果:从响应中提取hits和total,并遍历命中的文档,获取原始数据。

2025-01-20 23:48:57 1119

原创 ElasticSearch DSL查询之高亮显示

高亮显示是指在搜索结果中,将用户搜索的关键字突出显示,使其更为醒目。以百度搜索为例,当用户搜索“JAVA”时,搜索结果中的标题或概述部分会将“JAVA”高亮显示,通常以红色标出,便于用户查看。在 Elasticsearch 中实现高亮显示主要依赖于倒排索引和定位关键词位置的能力,通过指定需要高亮的字段和标签,Elasticsearch 可以自动为匹配的关键词加上标签。在前端的展示中,通过指定 CSS 样式来实现高亮效果,确保搜索结果更易于用户浏览。

2025-01-20 23:48:41 1437

原创 ElasticSearch DSL语句之深度分页问题

深度分页问题:随着页码的增加,传统分页查询(from和size)的性能会大幅下降,尤其是在数据量巨大的情况下。:Elasticsearch提供的解决方案,避免了重新排序数据,改为通过记住上一页最后一条记录的排序值,顺序查询下一页数据。使用场景:SearchAfter适用于深度分页、数据迁移和滚动查询等场景。传统分页:适合于小规模查询和随机跳页查询,但在数据量过大时需要限制查询页数,以避免性能问题。

2025-01-19 16:09:47 1184

原创 ElasticSearch DSL查询之排序和分页

如果我们希望按照其他字段进行排序,而非使用默认的相关度排序(例如,按照价格、销量等字段),可以使用sort参数来指定排序字段。必须是数值类型、地理坐标或日期类型。"query":{},"sort":["field":"asc"//"排序字段":"排序方式"(asc:升序、desc:降序)field:指定需要排序的字段名。asc(升序)或desc(降序)。排序:通过sort参数指定排序字段,支持单字段排序和多字段排序。分页:通过from和size参数控制返回数据的范围和条数。

2025-01-19 16:09:04 1217

原创 ElasticSearch DSL查询之复合查询

复合查询是 Elasticsearch 中用来处理多个查询条件组合的一种方式。在实际的业务场景中,我们往往会面对多条件的查询需求,而这些条件可能是复杂的、组合型的,因此需要通过复合查询来实现。基于逻辑运算的复合查询:将多个子查询使用逻辑运算符组合。影响相关性评分的查询:通过某些方式调整查询文档的相关性评分,以改变文档的排序。布尔查询(Boolean Query)是 Elasticsearch 中非常强大且灵活的查询方式,能够通过逻辑运算符将多个子查询结合起来。must。

2025-01-18 09:22:09 1702

原创 ElasticSearch DSL查询之叶子查询

和适用于需要对多个词条进行匹配的全文检索场景,性能较高,通常用于用户搜索输入包含多个关键词的情况。Term Query和适用于精确查询,不做分词处理,通常用于查询固定值、数值范围、日期等场景。Geo Query则适用于根据地理位置进行搜索,通常用于包含地理坐标的场景。每种查询方式有不同的使用场景和性能特点,选择合适的查询方式能够有效提升 Elasticsearch 的查询效率和准确度。

2025-01-18 09:21:19 1025

原创 ElasticSearch DSL查询之快速入门

叶子查询(Leaf Query):用来查询文档中特定字段的特定值,语法简单,主要用于单一字段的查询。复合查询(Compound Query):由多个叶子查询通过逻辑关系(如ANDOR等)组合而成,支持更复杂的查询条件。

2025-01-17 13:17:33 822

原创 ElasticSearch JavaRestClient之文档批处理

批处理的核心思想是将多个单个文档操作(增、删、改)合并成一个请求,通过一次 HTTP 请求提交多个操作。Elasticsearch 提供了一个名为的 API 来处理这种批量操作。批处理的基本流程:创建对象用于封装多次单独的操作,类似于 SQL 中的批量插入。添加单个请求到: 使用方法将每个单独的操作请求(如等)添加到中。每个操作都可以指定索引库名、文档ID、文档内容等信息。执行: 使用 Elasticsearch 客户端的bulk()方法提交请求。执行完毕后,返回批量操作的结果。通过。

2025-01-17 13:17:20 1052

原创 ElasticSearch JavaRestClient之文档的CRUD

初始化请求对象GetRequest请求方法index()方法get()方法delete()方法index()方法(全量更新),update()方法(局部更新)请求体新增和全量更新需要提供完整的文档内容。局部更新只需要提供更新的字段。响应处理查询文档时,需要提取响应中的source字段。删除文档时,通常没有返回文档内容,只有操作成功与否的状态。修改文档时,根据操作结果判断是新增还是更新。

2025-01-16 12:51:38 1433

原创 ElasticSearch JavaRestClient之新增文档

准备index请求对象:指定索引名、文档 ID 和文档内容。传入请求参数:使用source()方法传入 JSON 格式的文档内容。发送请求:通过客户端的index()方法发起请求。新增文档的操作分为三步:准备请求对象、构建请求参数、发送请求。通过 Java 客户端操作 Elasticsearch 时,我们使用来表示新增文档请求,并通过source()方法传入 JSON 格式的文档内容。

2025-01-16 12:46:40 1372

原创 ElasticSearch JavaRestClient之索引库操作

在 Elasticsearch 中,索引库是数据存储和查询的基础,学习如何通过 Java 客户端进行索引库的操作是很重要的。以下是使用 Java 客户端来创建、查询和删除索引库的详细操作步骤和实现。首先对比一下,创建索引库的 Java API 和 Restful 接口 API 对比:创建请求对象→设置请求体→发送请求。创建请求对象设置请求体:对于创建索引库等操作,可能需要设置请求体(通常是 JSON 格式的映射)。发送请求。

2025-01-15 13:03:28 1530

原创 ElasticSearch JavaRestClient之商品的Mapping

根据业务场景选择字段在设计 Elasticsearch Mapping 时,需要结合业务需求,分析哪些字段需要用于搜索、排序和展示,并根据这些需求选择字段类型和属性。字段类型选择keyword类型:用于存储不需要分词的字段,如商品 ID、分类、品牌、广告标识等。text类型:用于存储需要分词的字段,如商品名称。integer类型:用于存储数值类型字段,如价格、销量。boolean类型:用于存储布尔类型字段,如广告标识。date类型:用于存储时间类型字段,如更新时间。分词器选择。

2025-01-15 13:03:04 1060

原创 ElasticSearch JavaRestClient之客户端初始化

在之前我们通过浏览器操作 Elasticsearch 的接口进行文档的增删改查等操作。但在实际业务开发中,我们需要用 Java 代码调用 Elasticsearch 的 API 进行商品搜索等操作。因此,接下来将使用 Elasticsearch 提供的来完成这一任务。Elasticsearch 提供的 Java REST Client 允许我们通过 Java 程序与 Elasticsearch 进行交互。

2025-01-14 13:09:24 888

原创 ElasticSearch 文档操作之批量处理

Elasticsearch 提供了批量操作接口(Bulk API),允许在一次请求中携带多个文档操作。相比单个文档操作,批量操作可以显著提高处理效率,尤其是在有大量文档需要处理时。Elasticsearch 的批量操作(Bulk API)是处理大量文档的高效方式,可以在一次请求中执行多个文档的新增、删除、更新操作。请求参数采用特殊格式,支持多个操作并行处理,极大提高了性能和处理效率。在实际应用中,批量操作是处理海量数据时非常实用的工具。

2025-01-14 13:08:55 785

原创 ElasticSearch 文档操作之文档CRUD

新增文档,请求体包含文档数据。查询文档,返回文档的原始数据(source)。删除文档,删除指定ID的文档。修改文档全量修改,替换整个文档。增量修改,只修改指定字段。

2025-01-13 13:09:19 1342

原创 ElasticSearch 索引库操作之索引库的CRUD

GET: 查询操作POST: 新增操作PUT: 修改操作DELETE: 删除操作资源名称:通常是操作对象的名称(如用户、商品等)。操作行为:不同操作使用不同的 HTTP 方法(GET、POST、PUT、DELETE)。创建索引库,通过 JSON 提供mapping映射。查询索引库。删除索引库。添加字段,通过properties添加新字段。字段修改限制:不能修改已有字段的类型和索引设置,只能添加新字段。

2025-01-13 13:07:55 1178

原创 ElasticSearch 索引库操作之Mapping映射属性

在Elasticsearch中,mapping是用来定义文档字段的结构和数据类型的,类似于关系型数据库中的表结构定义。为了将数据存储到Elasticsearch索引库中,我们首先需要定义字段的映射规则。常见的映射属性包括字段的数据类型、是否创建索引、是否进行分词等。字段数据类型:选择合适的字段类型,决定数据存储和查询效率。索引与分词器:根据字段是否需要参与搜索,选择是否创建索引,并为可分词的字段指定分词器。嵌套对象与子字段:使用object类型存储嵌套结构,使用properties属性定义子字段。

2025-01-12 13:45:59 979

原创 ElasticSearch 基本概念

ElasticSearch 与关系型数据库(如 MySQL)有很多相似之处,尤其是在存储数据和查询方面。理解了这些基本概念后,可以更好地进行 ElasticSearch 的实际操作。

2025-01-12 13:45:08 618

原创 ElasticSearch之IK分词器

IK分词器:IK分词器由林良易在2006年开源发布,采用正向迭代最细粒度切分算法。它的特点是性能高,但自2012年以后不再维护,后续由其他开发者进行升级和维护。IK分词器的使用:IK分词器常用于中文分词,特别是在与Elasticsearch(简称ES)结合时,能够提供较好的分词效果。分词是倒排索引中不可或缺的一部分,尤其是在中文处理上,IK分词器提供了非常高效的分词功能。IK分词器的两种模式分别适合不同的场景,ik_smart适用于一般分词需求,而适用于细粒度分词。

2025-01-11 11:53:35 2654

原创 ElasticSearch之倒排索引

倒排索引(Inverted Index)是一种常用于高效文本检索的数据结构,特别适用于全文检索和模糊查询等场景。它的主要特点是将文档中的词语映射到包含该词的文档ID上,通过词条与文档ID的关联来快速查找相关文档。倒排索引与传统关系型数据库(如MySQL)的正向索引不同。传统的正向索引是通过对某个字段(如ID)的值建立索引,从而高效定位数据。倒排索引则是先对文档内容进行分词,并将词条与文档ID进行关联,使得通过关键词的查询更加高效。

2025-01-11 11:49:08 1185

原创 ElasticSearch 部署ES(docker)

部署ES(docker)

2025-01-10 11:47:47 1542 1

原创 ElasticSearch 认识和安装ES

es是一个分布式、高性能的搜索引擎,广泛应用于大数据检索、日志分析、实时搜索等场景。与传统数据库相比,ElasticSearch 对于大规模数据的处理具有显著优势,特别是模糊查询、分词分析、语义理解等复杂搜索任务。本章内容主要是介绍了 Elasticsearch 的基础知识、它的起源以及如何安装和配置 Elasticsearch 和 Kibana。安装过程中使用 Docker 是一种方便快捷的方式,可以轻松启动单机模式的 Elasticsearch 服务,并结合 Kibana 进行可视化操作。

2025-01-10 11:46:58 1688

原创 RabbitMQ高级篇之延迟消息 延迟消息插件

使用RabbitMQ的延迟消息插件,简化了传统死性交换机的复杂性。通过设置交换机的属性并配置x-delay消息属性,能够实现延迟消息的功能。在高并发场景下使用延迟消息时,需特别注意延迟时间的设置,以避免过长的延迟时间导致性能问题。这种插件提供了比传统方法更简洁、便捷的方式来实现消息延迟,适用于大多数需要延迟消息的场景。

2025-01-09 12:59:56 1532

原创 RabbitMQ高级篇之延迟消息 死信交换机

死信交换机是 RabbitMQ 提供的一种功能扩展机制,用于处理变成“死信”的消息。死信(Dead Letter)是指那些因某种原因不能被正常消费的消息。消费者拒绝消息:消息被消费者拒绝(reject或nack),且设置了,消息不会重新入队,而是直接成为死信。消息过期:消息在队列中超过设置的过期时间(TTL),仍未被消费,就会变成死信。队列达到最大长度:队列的消息数量达到最大值时,最早的消息会被丢弃,变成死信。通过结合死信交换机的机制和消息的过期时间,可以巧妙地实现延迟消息。

2025-01-09 12:57:23 1137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除