自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-04-03 15:31:56 273

原创 使用若依的字典

若依框架中字典的使用

2025-04-03 07:00:00 1468

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

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

2025-04-02 08:03:06 574

原创 ElasticSearch 聚合之DSL实现聚合

ElasticSearch 聚合之DSL实现聚合

2025-04-02 08:02:58 429

原创 ElasticSearch JavaRestClient查询之高亮显示

ElasticSearch JavaRestClient查询之高亮显示

2025-04-01 09:00:00 576

原创 ElasticSearch 聚合之聚合的分类

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

2025-04-01 09:00:00 886

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

ElasticSearch JavaRestClient查询之排序和分页。

2025-03-31 14:58:03 562

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

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

2025-03-31 14:56:55 554

原创 ElasticSearch JavaRestClient查询之快速入门

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

2025-01-20 23:48:57 989

原创 ElasticSearch DSL查询之高亮显示

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

2025-01-20 23:48:41 993

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

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

2025-01-19 16:09:47 1007

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

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

2025-01-19 16:09:04 640

原创 ElasticSearch DSL查询之复合查询

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

2025-01-18 09:22:09 1347

原创 ElasticSearch DSL查询之叶子查询

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

2025-01-18 09:21:19 695

原创 ElasticSearch DSL查询之快速入门

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

2025-01-17 13:17:33 621

原创 ElasticSearch JavaRestClient之文档批处理

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

2025-01-17 13:17:20 760

原创 ElasticSearch JavaRestClient之文档的CRUD

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

2025-01-16 12:51:38 1279

原创 ElasticSearch JavaRestClient之新增文档

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

2025-01-16 12:46:40 1139

原创 ElasticSearch JavaRestClient之索引库操作

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

2025-01-15 13:03:28 1192

原创 ElasticSearch JavaRestClient之商品的Mapping

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

2025-01-15 13:03:04 900

原创 ElasticSearch JavaRestClient之客户端初始化

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

2025-01-14 13:09:24 677

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

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

2025-01-14 13:08:55 299

原创 ElasticSearch 文档操作之文档CRUD

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

2025-01-13 13:09:19 1083

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

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

2025-01-13 13:07:55 1009

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

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

2025-01-12 13:45:59 775

原创 ElasticSearch 基本概念

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

2025-01-12 13:45:08 461

原创 ElasticSearch之IK分词器

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

2025-01-11 11:53:35 1236

原创 ElasticSearch之倒排索引

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

2025-01-11 11:49:08 949

原创 ElasticSearch 部署ES(docker)

部署ES(docker)

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

原创 ElasticSearch 认识和安装ES

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

2025-01-10 11:46:58 1136

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

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

2025-01-09 12:59:56 1072

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

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

2025-01-09 12:57:23 903

原创 RabbitMQ高级篇之延迟消息 介绍

通过使用延迟消息机制,可以有效地实现支付服务和交易服务之间的一致性。在支付超时未支付的情况下,延迟消息帮助交易服务主动查询支付状态并采取相应的措施,如更新订单状态或取消订单,保证了系统状态的一致性。用户下单,发送延迟消息到RabbitMQ。延迟时间到后,交易服务检查支付状态。根据支付状态,更新订单或取消订单,恢复库存。

2025-01-08 12:24:01 1071

原创 RabbitMQ高级篇之消费者可靠性 业务幂等处理

解决RabbitMQ中的消息重复消费问题,关键是保证业务逻辑的幂等性。通过唯一ID或基于业务的判断逻辑,可以确保消息的重复消费不会导致不一致或错误的业务状态。同时,借助消息确认机制和重试机制,可以确保消息投递和处理的可靠性。

2025-01-08 12:23:21 1011

原创 RabbitMQ高级篇之消费者可靠性 消费者失败重连策略

消费者在出现消息处理异常时,会在本地重试,而不会重新入队到 MQ,从而减少 MQ 和消费者之间的压力。:消息失败后,经过本地多次重试后,重新入队到 RabbitMQ,这会导致类似踢皮球的现象,但频率较低。:消息失败后,重试多次失败后,将消息转发到一个专门的错误交换机,供后续人工干预和处理。如果消息被重发到错误交换机,会将失败的消息记录详细的异常信息,供开发者处理。:根据业务需求,可以选择不同的失败消息处理策略,避免重试过多次后丢弃消息。这种情况下,RabbitMQ 会持续重投消息,造成非常大的压力。

2025-01-07 13:43:22 941

原创 RabbitMQ高级篇之消费者可靠性 消费者确认机制

消费者确认机制是为了确保消费者成功处理了消息。在消费者成功处理消息后,需要向RabbitMQ发送一个确认回执,告诉RabbitMQ消息的处理结果。这个机制类似于发送者确认机制,都是确保消息可靠性的手段。Spring AMQP 提供的消费者确认机制能够有效保证消息的可靠性。通过合理配置ACK、NACK和REJECT,我们可以确保在消息消费过程中,遇到问题时能够自动重试或丢弃问题消息,避免消息丢失或处理不当。推荐使用auto模式,它能够最大化地减少开发者的负担,让Spring自动处理消息的确认。

2025-01-07 13:40:31 1140

原创 RabbitMQ高级篇之MQ可靠性 Lazy Queue

惰性队列(Lazy Queue):直接将消息写入磁盘,避免内存占用,提高并发能力。磁盘写入优化:相比传统持久化队列,惰性队列在写磁盘时更加高效,减少了page out阻塞问题。消费者动态缓存:根据消费者处理速度调整内存缓存,优化读取性能。使用方式控制台:勾选Lazy Mode。代码:使用lazy()方法。注解:通过arguments配置。

2025-01-06 14:47:36 1911

原创 RabbitMQ高级篇之MQ可靠性 数据持久化

为了确保 RabbitMQ 的消息可靠性,应采用以下措施:确保交换机、队列和消息都做持久化,避免数据丢失。通过 Spring AMQP 默认配置,可以确保消息的可靠性,但需要注意消息持久化的性能开销。持久化虽然会带来一定的性能开销,但比起非持久化模式导致的阻塞问题,持久化更有利于系统的稳定性和可靠性。

2025-01-06 14:45:20 1343

原创 RabbitMQ高级篇之发送者可靠性 发送者确认的代码实现

发送者确认机制由和两部分组成,能够提高消息发送的可靠性。和用来处理消息发送失败的情况,提供消息投递失败的原因。该机制虽能提高可靠性,但会影响系统性能,因此要谨慎使用,并合理设置重试机制。

2025-01-05 18:58:44 502

原创 RabbitMQ高级篇之发送者可靠性 发送者确认机制

通过开启这些机制,发送方发送消息给 RabbitMQ 时,RabbitMQ 会根据消息处理的结果返回一个确认结果给发送者。,表示消息投递成功,但由于路由失败,消息无法被消费。当消息投递到 RabbitMQ 时,如果发生路由失败,RabbitMQ 会通过。通过回调函数异步处理确认结果,不会阻塞主线程,适合高性能需求的应用。发送消息时,使用回调函数来处理确认结果,不会阻塞主线程。临时消息:不需要持久化,消息投递到队列即算成功,返回。配置,在发送消息时指定消息确认回调。提高消息发送的可靠性,防止消息丢失。

2025-01-05 18:54:03 613

空空如也

空空如也

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

TA关注的人

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