elasticsearch8.5版本集成springboot高版本3.0.0开发

基础环境

jdk版本:17
springboot 版本:3.0.0
springcloud版本:2022.0.0
elasticserch版本:8.5.1

Maven 配置

     <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.0</version><relativePath/></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${sping-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId></dependency>

业务常规开发

多条件&排序搜索文档数据

    public List<ProductResp> queryProductDoc(ProductReq req) {List<ProductResp> productList = Lists.newArrayList();List<Query> queries = getQueryConditions(req);SearchResponse<ProductResp> search  = elasticsearchClient.search(s -> s.index("product").query(q->q.bool(b->b.must(queries)))//分页查询,从第0页开始查询size个document.from(req.getPageNum()-1).size(req.getPageSize())//按createTime降序、状态升序排序.sort(f->f.field(o->o.field("createTime").order(SortOrder.Desc))).sort(f->f.field(o->o.field("status").order(SortOrder.Asc))),ProductResp.class);for (Hit<ProductResp> hit : search.hits().hits()) {ProductResp resp = hit.source();productList.add(resp);}return productList;}/*** 组装查询的条件* @param req* @return*/private List<Query> getQueryConditions(ProductReq req){List<Query> queries = new ArrayList<>();if(CollectionUtils.isNotEmpty(req.getBrandIds())){List<FieldValue> values = new ArrayList<>();for (String id : req.getBrandIds()) {values.add(FieldValue.of(id));}//brandId字段精确查询Query brandQuery = TermsQuery.of(t -> t.field("brandId").terms(new TermsQueryField.Builder().value(values).build()))._toQuery();queries.add(brandQuery);}if(!Objects.isNull(req.getCategoryCodes())&&req.getCategoryCodes()!=0){List<FieldValue> values = new ArrayList<>();values.add(FieldValue.of(req.getCategoryCodes()));//categoryCodes精确匹配多个枚举值(类似sql in查询: where categoryCodes in (values))Query mallL5CategoriesQuery = TermsQuery.of(t->t.field("categoryCodes").terms(new TermsQueryField.Builder().value(values).build()))._toQuery();queries.add(mallL5CategoriesQuery);}if(!Objects.isNull(req.getIsHaveStock())){if(req.getIsHaveStock()==1){JsonData stockFlag = JsonData.of(0);//availableStock范围查询(类似sql:where availableStock>xxx)Query hasStockQuery = RangeQuery.of(t->t.field("availableStock").gt(stockFlag))._toQuery();queries.add(hasStockQuery);}else{JsonData stockFlag = JsonData.of(0);Query hasStockQuery = RangeQuery.of(t->t.field("availableStock").lte(stockFlag))._toQuery();queries.add(hasStockQuery);}}if(StringUtils.isNotBlank(req.getKeyWord())){String keyword = req.getKeyWord();if (req.getKeyWord().contains("|")) {keyword = keyword.replace("|", "");} else {keyword = req.getKeyWord();}final String finalKeyWord = keyword;//前端传一个关键字匹配多字段,类似sql语句(where name like '%keyword%' or code like '%keyword%' or desc like '%keyword%' )Query nameQuery= MatchQuery.of(m->m.field("name").query(req.getKeyWord()))._toQuery();Query codeQuery= MatchQuery.of(m->m.field("code").query(finalKeyWord))._toQuery();Query descQuery= MatchQuery.of(m->m.field("desc").query(finalKeyWord))._toQuery();List<Query> newQuery = Arrays.asList(nameQuery, codeQuery, descQuery);Query query = BoolQuery.of(m -> m.should(newQuery))._toQuery();//skuCode //productSizequeries.add(query);}return queries;}

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

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

相关文章

maven的pom.xml设置本地仓库

配置 在Maven项目中&#xff0c;您可以在pom.xml文件中配置本地仓库的路径。在pom.xml文件中&#xff0c;您可以添加以下配置来指定本地仓库的路径&#xff1a; <project>...<repositories><repository><id>local-repo</id><url>file://…

【虹科分享】金融服务急需数据层改造

文章速览&#xff1a; 数字化转型正在颠覆银行与金融业金融服务的未来Redis Enterprise赋能实时金融应用 金融服务越来越注重实时互动体验&#xff0c;重构关键业务流程&#xff0c;从数据层入手该怎么做&#xff1f; 一、数字化转型正在颠覆银行与金融业 金融科技行业的初创…

网络技术基础与计算思维实验教程_4.2_静态路由项配置实验

实验内容 实验目的 实验原理 关键命令 实验步骤 构建 安装完成以后 可以看到路由器有三个快速以太网接口 为3安装 分别构建两个以太网 用交叉线连接router1和2 配置IP地址 完成配置过程 查看路由表 根据路由表添加 现在可以实现PC0和PC1之间的ICMP报文传输 Router(config)#…

虾皮跨境电商物流:打造高效便捷的全球供应链解决方案

随着全球化的推进和电子商务的蓬勃发展&#xff0c;跨境电商物流成为了越来越多商家和消费者关注的焦点。虾皮&#xff08;Shopee&#xff09;作为一家领先的电商平台&#xff0c;不仅提供了丰富多样的商品选择&#xff0c;还致力于为卖家和消费者提供高效便捷的跨境电商物流服…

@vue/cli脚手架

0_vue/cli 脚手架介绍 目标: webpack自己配置环境很麻烦, 下载vue/cli包,用vue命令创建脚手架项目 vue/cli是Vue官方提供的一个全局模块包(得到vue命令), 此包用于创建脚手架项目 脚手架是为了保证各施工过程顺利进行而搭设的工作平 vue/cli的好处 开箱即用 0配置webpack babe…

STL中优先队列(堆)的详解

文章目录 priority_queue的基本介绍堆(heap)堆的概念与结构 priority_queue 的介绍与使用 priority_queue的基本介绍 这个priority_queue翻译成中文就是优先级队列&#xff0c;但其实我们很难去一眼看出他的意思到底是什么&#xff0c;他的逻辑结构实际上类似于数据结构中的堆…

[NISACTF 2022]easyssrf

[NISACTF 2022]easyssrf wp ssrf 的题目&#xff0c;提示了会使用 curl 连接输入的网站并返回响应包。 测试连接百度 直接在输入框中写 www.baidu.com 是无法连接的&#xff0c;需要在前面加入 http 或者 https &#xff0c;因为 curl 的使用方式就是&#xff1a; curl htt…

单片机实验汇编语言版全代码及实验现象总结

文章目录 实验一.3路跑马灯进行二进制数展示实验二.8个LED轮流显示(p1口连接LED)实验三.8-3译码器的使用实验四.简单程序设计2分频实验加减运算实验 实验五.中断系统实验(数码管共阳)10进制计数器8位数码管轮流显示固定数08位数码管上稳定显示0-7(位选P2 段选P0) 实验六.外部中…

VS Code配置C语言环境

首先安装一个C语言的编译器&#xff0c;然后将其位置添加到系统环境变量中。&#xff08;之后需要重启一下vs,才能检测到编译器&#xff09; 打开vscode下载4个插件&#xff1a; C/C Extension PackCode RunnerInclude AutocompleteCMake Tools 然后打开设置把三个选项勾上。…

cad x命令炸开图纸怎么恢复?

cad x命令炸开图纸怎么恢复&#xff1f;cad图纸使用x命令炸开后&#xff0c;想要组合在一起&#xff0c;该怎么操作呢&#xff1f;下面我们就来看看cad炸开命令的详细使用教程 今天我们主要解决在cad中用x炸开后恢复的问题&#xff0c;当然附带一些基础知识也一起普及一下。 …

Python中实现消息队列:构建高效异步通信系统的完整指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 消息队列的基础概念 在开始之前&#xff0c;先了解一些消息队列的基础概念。 1 什么是消息队列&#xff1f; 消息队列是一种通信方式&#xff0c;它允许将消息从一个应用程序传递到另一个应用程序。消息队列提…

目标检测入门体验,技术选型,加载数据集、构建机器学习模型、训练并评估

Hi, I’m Shendi 1、目标检测入门体验&#xff0c;技术选型&#xff0c;加载数据集、构建机器学习模型、训练并评估 在最近有了个物体识别的需求&#xff0c;于是开始学习 在一番比较与询问后&#xff0c;最终选择 TensorFlow。 对于编程语言&#xff0c;我比较偏向Java或nod…

多切片联合构建3D生物空间图谱

空间转录组&#xff08;ST&#xff0c;Spatial transcriptomics&#xff09;技术正在革新探索组织空间结构的方式。目前&#xff0c;ST数据分析通常仅限于单个2D组织切片&#xff0c;限制了我们理解3D空间中发生的生物过程。在这里&#xff0c;作者提出了STitch3D&#xff0c;一…

SpringIOC之LocaleContext

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

Sublime Text 3配置 C# 开发环境

Sublime Text 3配置 C# 开发环境 一、引言二、主要内容1. 初识 Sublime Text 32. 初识 C#3. 接入 .NET Framework3.1 下载 .NET Framework3.2 环境变量配置 4. 配置 C# 开发环境5. 编写 C# 代码6. 运行 C# 代码 三、总结 一、引言 C# 是一种面向对象的编程语言&#xff0c;由微…

100GPTS计划-AI文章扩展ContentExpander

地址 https://chat.openai.com/g/g-jPr6gWUI9-content-expander https://poe.com/ContentExpander 测试 微调 内容扩展器专门用于扩展小说相关文本 上下文微调 保证小说基本风格

【收藏】法律人办案必备检索网站最新汇总!附检索技巧

为什么要进行法律检索?无论你擅长的是做诉讼还是非诉讼业务,法律检索都是必备技能之一。只有做好法律检索才能制定出更加完备的策略报告,才能提供更加充实、可行、准确的方案。 一、数据库检索 1、alpha数据库 https://www.icourt.cc 已经用了3年的大数据库,听说最近降价了…

Unreal5.3 PCG 笔记

目录 ElectricDreams场景功能移动中间山体向周围随机生成倒下的树干树干上随机生成的植被 ElectricDreams场景功能 移动中间山体向周围随机生成倒下的树干 配置内容 中心山体Spline周围沟渠Spline&#xff08;土堆&#xff09;PCG规则 主要功能节点 SplineSample&#xff08;…

大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

【IT AI Termiology】

IT termiology I) Database1.1) IDC : Internet Data Center II) Script Linux , powershell, etcIII) Program / Code, JSIV) AI, depth learning, micro circuit, chips, etcNVIDIA I) Database 1.1) IDC : Internet Data Center 互联网数据中心&#xff08;Internet Data …