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实现查询功能
第一步、添加依赖(注意版本对应关系)根据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 编码,开 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文件,在末尾添加: rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...
Request failed with status code 504,Gateway time out
问题描述: 部署在测试环境的项目在执行某功能时,后台程序在执行过程中,前端控制台在一分钟左右会报出Request failed with status code 504,Gateway time out异常。但是在本地开发环境会正常运行,并不会报出异常。 问题…...
四、Elasticsearch 进阶
自定义目录 4.1 核心概念4.1.1 索引(Index)4.1.2 类型(Type)4.1.3 文档(Document)4.1.3 字段(Field)4.1.5 映射(Mapping)4.1.6 分片(Shards&#…...
海外云手机如何帮助亚马逊引流?
随着全球化的推进,出海企业和B2B外贸企业越来越注重海外市场的开拓,这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机,能够在单一芯片上多开几个…...
Gateway新一代网关
Gateway新一代网关 1、概述 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关; 但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 官网&…...
Simulink中Scope图像导出在MATLAB上重新画
在Simulink中,Scope是一个常用的可视化工具,用于实时显示仿真过程中的信号波形。 1. 从Simulink Scope中导出数据 首先,您需要在Simulink的Scope中捕获或记录想要导出的数据。这通常通过配置Scope的“Logging”选项来实现。确保在仿真过程中…...
利用opencv获取系统时间
前一篇《c获取系统时间的方法-CSDN博客》博客介绍了如何在不同系统中获取系统时间的方法,但这些方法受系统的限制,如time.h就只能在Linux系统中使用。而opencv则不受系统限制,示例代码如下, #include <opencv2/opencv.hpp>…...
Go环境变量配置,及GOROOT、GOPATH的区别
一、安装Go go下载地址: https://golang.google.cn/dl/ windows下载安装,有两种方式。解压和直接安装 方式一:直接下载安装包。以.msi结尾的文件。例如: go1.22.1.windows-amd64.msi 下载后,双击后一直点下一步即…...
爬虫系列-CSS基础语法
🌈个人主页:会编程的果子君 💫个人格言:“成为自己未来的主人~” CSS全称层叠样式表 ,主要用来定义页面内容展示效果的一门语言,HTML:页面骨架,素颜CSS:页面效果美化:…...
获取比特币和莱特币的实时价格
数据来源: https://datacenter.jin10.com/reportType/dc_bitcoin_current 代码: 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中常见的组件之一,有时候也称之为手风琴。咱们先看下Axure画出的折叠面板原型效果,然后再对该组件进行详细讲解。 一、功能介绍 折叠或展开多个面板内容,默认为展开一项内容&…...
SQLiteC/C++接口详细介绍sqlite3_stmt类(五)
返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(四)- 下一篇: 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据(字符串)绑定…...
单片机-- 数电(3)
编码器与译码器 译码 :将二进制代码转化为其他进制的代码 编码 :就是将其他代码转换为二进制码 编码器的类型 1二进制编码器 用n位二进制数码对2的n次方个输入信号进行编码的电路 2二-十进制编码器 将0到9十个十进制数转化为二进制代码的电路 2…...
基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计
基于Java中的SSM框架实现在线通用旅游平台网站系统演示 摘要 近几年来,计算机网络的发展得到了飞速的提升,由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识,现在它正在悄悄的改变着我们生活的…...
「数据分析」之零基础入门数据挖掘
摘要:对于数据挖掘项目,本文将学习应该从哪些角度分析数据?如何对数据进行整体把握,如何处理异常值与缺失值,从哪些维度进行特征及预测值分析? 探索性数据分析(Exploratory Data Analysis&#…...
【力扣】383.赎金信
题目描述 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: …...
【Linux】传输层协议:TCP/UDP
目录 netstat pidof UDP协议 TCP协议 TCP协议段格式 TCP协议的相关机制 确认应答(ACK)机制 超时重传机制 连接管理机制 服务端状态转换 客户端状态转化 流量控制 流量控制常见问题: 滑动窗口 拥塞控制 延迟应答 面向字节流…...
Linux运维_Bash脚本_构建安装Systemd-250
Linux运维_Bash脚本_构建安装Systemd-250 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
RLHF vs RLVR:对齐学习中的两种强化方式详解
在语言模型对齐(alignment)中,强化学习(RL)是一种重要的策略。而其中两种典型形式——RLHF(Reinforcement Learning with Human Feedback) 与 RLVR(Reinforcement Learning with Ver…...
Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集
目录 一、引言:当爬虫遭遇"地域封锁"二、背景解析:分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计:Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
