当前位置: 首页 > news >正文

spring boot整合elasticsearch实现查询功能

第一步、添加依赖(注意版本对应关系)根据spring boot版本选择合适的版本

        <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.6.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.3.12.RELEASE</version></dependency>

第二步、添加配置

spring:elasticsearch:rest:uris: localhost:9200connection-timeout: 1000request-timeout: 1000read-timeout: 1000username: elasticpassword: elastic

 第三步、编码

/*** 商城商品* @Author: 陈礼林* @CreateTime: 2023-04-20  09:28*/
@Document(indexName = "mall_commodity")
@Data
public class MallCommodityDtoRsp {/*** 主键*/@Id@Field(store = true, index = false, type = org.springframework.data.elasticsearch.annotations.FieldType.Text)private String id;/*** 商品名称*/private String name;/*** 分类名称*/private String classifyName;/*** 分类名称*/private String attributeName;/*** 商品缩略图*/private String picture;/*** 商品规格类型 1单规格 2多规格 3套餐*/private Integer specType;/*** 商品编号*/private String commodityNo;/*** 生产批号*/private String batchNo;/*** 商品类型(1普通,2赠送)*/private Integer commodityType;/*** 销售价格(单位分)*/private Integer minPrice;/*** 销售价格(单位分)*/private Integer maxPrice;/*** 单位*/private String unit;/*** 排序*/private Integer sort;/*** 商品数量*/private Integer commodityCount;/*** 商品状态 1上架 2下架*/private Integer status;@Field(store = true, index = false, type = FieldType.Object)private List<MallCommodityDetailed> detailedList;}

 同步mysql数据到elasticsearch服务器

/*** @Description: 同步mysql数据到es定时任务* @Author: 陈礼林* @CreateTime: 2024-03-16  10:56*/
@Slf4j
@Component
public class CommoditySyncEsTask {@Resourceprivate MallCommodityService service;@Resourceprivate ElasticsearchRestTemplate elasticsearchRestTemplate;@XxlJob("commoditySyncEsHandler")public void commoditySyncEs(){log.info("开始执行:商品同步定时任务");MallCommodityDtoPageReq req = new MallCommodityDtoPageReq();List<MallCommodityDtoRsp> records = service.page(req).getRecords();if (ListUtil.isNotNull(records)) {elasticsearchRestTemplate.save(records);}log.info("执行结束:商品同步定时任务");}
}
/*** 商城-商品表控制器** @author 陈礼林* @date 2022-04-12 14:39:41*/
@RestController
@RequestMapping("/mmServer/mall/commodity")
public class MallCommodityController {@Resourceprivate ElasticsearchRestTemplate elasticsearchRestTemplate;/*** 分页** @param req 分页参数* @return 查询结果*/@PostMapping("/page")public R page(@RequestBody MallCommodityDtoPageReq req){//查询条件
//        查询全部数据
//        QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();//        精确查询 =
//        QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "lisi");//        精确查询 多个 in
//        QueryBuilder queryBuilder = QueryBuilders.termsQuery("name", "张三", "lisi");//        match匹配,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系,可以指定分词
//        QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "张三");
//        QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "张三").analyzer("ik_max_word");//        match匹配 查询多个字段
//        QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("男", "name", "sex");//        fuzzy 模糊查询,返回包含与搜索字词相似的字词的文档。
//        QueryBuilder  queryBuilder = QueryBuilders.fuzzyQuery("name","lisx");//        prefix 前缀检索
//        QueryBuilder  queryBuilder = QueryBuilders.prefixQuery("name","张");//        wildcard 通配符检索
//        QueryBuilder  queryBuilder = QueryBuilders.wildcardQuery("name","张*");//        regexp 正则查询
//        QueryBuilder queryBuilder = QueryBuilders.regexpQuery("name", "(张三)|(lisi)");//        boost 评分权重,令满足某个条件的文档的得分更高,从而使得其排名更靠前。
//        queryBuilder.boost(2);
//        多条件构建BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
//        并且 and
//        queryBuilder.must(QueryBuilders.termQuery("name", "张三"));if (req.getSpecType() != null) {queryBuilder.must(QueryBuilders.termQuery("specType", req.getSpecType()));}if (req.getName() != null) {queryBuilder.should(QueryBuilders.fuzzyQuery("name", req.getName()));}//        或者 or
//        queryBuilder.should(QueryBuilders.fuzzyQuery("name", "测试"));
//        queryBuilder.should(QueryBuilders.termQuery("name", "lisi"));//        不等于,去除
//        queryBuilder.mustNot(QueryBuilders.termQuery("name", "lisi"));//        过滤数据
//        queryBuilder.filter(QueryBuilders.matchQuery("name", "张三"));//        范围查询/*gt 大于 >gte 大于等于 >=lt 小于 <lte 小于等于 <=*/
//        queryBuilder.filter(new RangeQueryBuilder("age").gt(10).lte(50));//        构建分页,page 从0开始Pageable pageable = PageRequest.of(req.getPageNumber(), req.getPageSize());Query query = new NativeSearchQueryBuilder().withQuery(queryBuilder).withPageable(pageable)//排序
//                .withSort(SortBuilders.fieldSort("_score").order(SortOrder.DESC))//投影
//                .withFields("name").build();SearchHits<MallCommodityDtoRsp> search = elasticsearchRestTemplate.search(query, MallCommodityDtoRsp.class);return R.ok(search.getSearchHits());
//        return R.ok(service.page(req));}/*** 通过id集合查询列表** @param id id* @return 查询结果*/@PostMapping("/get")public R<MallCommodityDtoRsp> get(@Param("id") Long id){MallCommodityDtoRsp search = elasticsearchRestTemplate.get(id.toString(),MallCommodityDtoRsp.class);return R.ok(search);}}

 

相关文章:

spring boot整合elasticsearch实现查询功能

第一步、添加依赖&#xff08;注意版本对应关系&#xff09;根据spring boot版本选择合适的版本 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.6.2</version></dependenc…...

白嫖阿里云程序员日历

https://developer.aliyun.com/topic/lingma/activities/202403?taskCode14508&recordId44f3187f7950776f494eec668a62c65f#/?utm_contentm_fission_1 「通义灵码 体验 AI 编码&#xff0c;开 AI 盲盒」 打开链接直接领就行了...

ubuntu20.04搭建rtmp视频服务

1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件&#xff0c;在末尾添加&#xff1a; rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...

Request failed with status code 504,Gateway time out

问题描述&#xff1a; 部署在测试环境的项目在执行某功能时&#xff0c;后台程序在执行过程中&#xff0c;前端控制台在一分钟左右会报出Request failed with status code 504&#xff0c;Gateway time out异常。但是在本地开发环境会正常运行&#xff0c;并不会报出异常。 问题…...

四、Elasticsearch 进阶

自定义目录 4.1 核心概念4.1.1 索引&#xff08;Index&#xff09;4.1.2 类型&#xff08;Type&#xff09;4.1.3 文档&#xff08;Document&#xff09;4.1.3 字段&#xff08;Field&#xff09;4.1.5 映射&#xff08;Mapping&#xff09;4.1.6 分片&#xff08;Shards&#…...

海外云手机如何帮助亚马逊引流?

随着全球化的推进&#xff0c;出海企业和B2B外贸企业越来越注重海外市场的开拓&#xff0c;这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机&#xff0c;能够在单一芯片上多开几个…...

Gateway新一代网关

Gateway新一代网关 1、概述 ​ Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中都是采用的Zuul网关&#xff1b; ​ 但在2.x版本中&#xff0c;zuul的升级一直跳票&#xff0c;SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 ​ 官网&…...

Simulink中Scope图像导出在MATLAB上重新画

在Simulink中&#xff0c;Scope是一个常用的可视化工具&#xff0c;用于实时显示仿真过程中的信号波形。 1. 从Simulink Scope中导出数据 首先&#xff0c;您需要在Simulink的Scope中捕获或记录想要导出的数据。这通常通过配置Scope的“Logging”选项来实现。确保在仿真过程中…...

利用opencv获取系统时间

前一篇《c获取系统时间的方法-CSDN博客》博客介绍了如何在不同系统中获取系统时间的方法&#xff0c;但这些方法受系统的限制&#xff0c;如time.h就只能在Linux系统中使用。而opencv则不受系统限制&#xff0c;示例代码如下&#xff0c; #include <opencv2/opencv.hpp>…...

Go环境变量配置,及GOROOT、GOPATH的区别

一、安装Go go下载地址&#xff1a; https://golang.google.cn/dl/ windows下载安装&#xff0c;有两种方式。解压和直接安装 方式一&#xff1a;直接下载安装包。以.msi结尾的文件。例如&#xff1a; go1.22.1.windows-amd64.msi 下载后&#xff0c;双击后一直点下一步即…...

爬虫系列-CSS基础语法

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” CSS全称层叠样式表 &#xff0c;主要用来定义页面内容展示效果的一门语言&#xff0c;HTML&#xff1a;页面骨架&#xff0c;素颜CSS&#xff1a;页面效果美化&#xff1a…...

获取比特币和莱特币的实时价格

数据来源&#xff1a; https://datacenter.jin10.com/reportType/dc_bitcoin_current 代码&#xff1a; import akshare as ak import pandas as pd pd.set_option(display.max_columns, None) pd.set_option(display.max_rows, None) pd.set_option(display.width, 1000)cr…...

Axure案例分享—折叠面板(附下载地址)

今天和大家分享的Axure案例是折叠面板 折叠面板是移动端APP中常见的组件之一&#xff0c;有时候也称之为手风琴。咱们先看下Axure画出的折叠面板原型效果&#xff0c;然后再对该组件进行详细讲解。 一、功能介绍 折叠或展开多个面板内容&#xff0c;默认为展开一项内容&…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;四&#xff09;- 下一篇&#xff1a; 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据&#xff08;字符串&#xff09;绑定…...

单片机-- 数电(3)

编码器与译码器 译码 &#xff1a;将二进制代码转化为其他进制的代码 编码 &#xff1a;就是将其他代码转换为二进制码 编码器的类型 1二进制编码器 用n位二进制数码对2的n次方个输入信号进行编码的电路 2二-十进制编码器 将0到9十个十进制数转化为二进制代码的电路 2…...

基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现在线通用旅游平台网站系统演示 摘要 近几年来&#xff0c;计算机网络的发展得到了飞速的提升&#xff0c;由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识&#xff0c;现在它正在悄悄的改变着我们生活的…...

「数据分析」之零基础入门数据挖掘

摘要&#xff1a;对于数据挖掘项目&#xff0c;本文将学习应该从哪些角度分析数据&#xff1f;如何对数据进行整体把握&#xff0c;如何处理异常值与缺失值&#xff0c;从哪些维度进行特征及预测值分析&#xff1f; 探索性数据分析&#xff08;Exploratory Data Analysis&#…...

【力扣】383.赎金信

题目描述 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; …...

【Linux】传输层协议:TCP/UDP

目录 netstat pidof UDP协议 TCP协议 TCP协议段格式 TCP协议的相关机制 确认应答&#xff08;ACK&#xff09;机制 超时重传机制 连接管理机制 服务端状态转换 客户端状态转化 流量控制 流量控制常见问题&#xff1a; 滑动窗口 拥塞控制 延迟应答 面向字节流…...

Linux运维_Bash脚本_构建安装Systemd-250

Linux运维_Bash脚本_构建安装Systemd-250 Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…...

如何在Blender中实现虚幻引擎PSK/PSA文件的无缝导入导出

如何在Blender中实现虚幻引擎PSK/PSA文件的无缝导入导出 【免费下载链接】io_scene_psk_psa A Blender extension for importing and exporting Unreal PSK and PSA files 项目地址: https://gitcode.com/gh_mirrors/io/io_scene_psk_psa 你是否曾为在Blender和虚幻引擎…...

语音识别安全加固:SenseVoice-Small ONNX输入校验与异常防护

语音识别安全加固&#xff1a;SenseVoice-Small ONNX输入校验与异常防护 1. 项目背景与安全挑战 SenseVoice-Small ONNX语音识别工具基于FunASR开源框架开发&#xff0c;采用Int8量化技术实现本地高效语音识别。在实际应用中&#xff0c;语音识别系统面临着多种安全风险&…...

AI生成代码的「可信边界」在哪里?2026奇点大会联合MIT、CNCF发布《AI代码生产安全基线V1.0》:含17项静态检测阈值、3类不可自动化修复缺陷清单

第一章&#xff1a;AI生成代码的「可信边界」本质探源 2026奇点智能技术大会(https://ml-summit.org) 「可信边界」并非指模型输出是否语法正确&#xff0c;而是其行为在真实工程语境中是否可预测、可验证、可归责。这一边界根植于训练数据的隐式契约、推理过程的不可观测性&…...

ABAQUS网格划分实战:从Hex到Tet,手把手教你搞定复杂模型的网格(附算法选择避坑指南)

ABAQUS网格划分实战&#xff1a;从Hex到Tet&#xff0c;手把手教你搞定复杂模型的网格&#xff08;附算法选择避坑指南&#xff09; 在有限元分析的浩瀚海洋中&#xff0c;网格划分就像是为数学模型搭建的骨架——它既要精确捕捉结构的力学行为&#xff0c;又要兼顾计算效率。对…...

仅剩72小时!奇点大会回滚建议API公测通道即将关闭:手把手接入支持Python/TypeScript/Rust的实时建议SDK

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI代码回滚建议 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上&#xff0c;AI驱动的代码变更风险评估与自动化回滚机制成为核心议题。随着LLM辅助编程在CI/CD流水线中深度集成&#xff0c;误生成…...

React 架构的可伸缩性:探讨从微型项目向大型单体 React 项目平滑演进的代码组织规范

React 架构的可伸缩性&#xff1a;从面条代码到企业级堡垒的进化论各位前端同仁&#xff0c;大家好&#xff01;今天我们不谈那些花里胡哨的 UI 库&#xff0c;也不聊怎么用 Tailwind 把一个丑陋的按钮变得稍微好看那么一点点。今天我们要聊的是一点“硬核”的东西——架构。想…...

React 部分注水(Partial Hydration):分析岛屿架构(Islands Architecture)对 React 的启示

拒绝“大水漫灌”&#xff1a;React 部分注水与岛屿架构的深度巡礼各位同仁&#xff0c;各位老铁&#xff0c;各位在键盘前敲得手指都要起茧子的前端工程师们&#xff0c;大家好。今天我们不聊 API&#xff0c;不聊 Hooks 的玄学&#xff0c;也不聊 TypeScript 的类型地狱。今天…...

Bootstrap 5中浮动标签(Floating Labels)怎么用?

label必须置于input后且input需含placeholder&#xff0c;否则浮动失效&#xff1b;select无真正浮动动画&#xff0c;textarea正常&#xff1b;form-control类不可少&#xff1b;::placeholder样式需同步调整以避免视觉断裂。label 必须放在 input 后面&#xff0c;且 input 必…...

SITS2026圆桌争议焦点全解析,AGI是否会在2029年前通过图灵-2.0测试?——附5家头部实验室内部基准测试原始数据

第一章&#xff1a;SITS2026圆桌&#xff1a;AGI何时到来 2026奇点智能技术大会(https://ml-summit.org) 圆桌共识与分歧焦点 在SITS2026主会场举行的“AGI何时到来”圆桌论坛中&#xff0c;来自DeepMind、Anthropic、中科院自动化所及OpenAI前核心架构师的六位专家展开激烈交…...

技术挑战:模块交互中的条件替换异常分析与解决

技术挑战&#xff1a;模块交互中的条件替换异常分析与解决 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https://gitcode…...