SpringBoot操作Elasticsearch

devtools/2024/11/14 13:04:25/

SpringBoot操作Elasticsearch

SpringData框架简化Java代码连接ES的过程

官网:https://spring.io/projects/spring-data/

image-20230712214657792

以上列表中都是Spring Data支持连接的数据源

添加依赖

已经添加过了

        <!--添加SpringDataES的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
配置文件信息
# 设置ES所在的地址
spring:elasticsearch:rest:uris: http://172.26.6.53:9200
# 显示ES运行信息,设置debug的日志级别
logging:level:cn:tedu:elasticsearch: debug# Spring Data ES底层一个源码类,也有日志信息输出,单独设置org:elasticsearch:client:RestClient: debug
创建和ES关联的实体类
@Data
@Accessors(chain = true) //开启链式set赋值的功能
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "items")
public class Item implements Serializable {@Id //标记为ES的主键private Long id;@Field(type = FieldType.Text,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")private String title; //商品的名称@Field(type = FieldType.Keyword) //不需要进行切分private String brand;//商品的品牌@Field(type = FieldType.Keyword) //不需要进行切分private String category;//商品的分类@Field(type = FieldType.Double)private Double price; //价格@Field(type = FieldType.Keyword,index = false) //不创建索引private String imgPath; //图片地址
}
持久层
@Repository
public interface ItemRepository extendsElasticsearchRepository<Item,Long> {//继承ElasticsearchRepository接口,就可以使用SpringDataES封装好的增删改查的方法//ElasticsearchRepository<[实体类类型],[实体类主键类型]>}
测试ES
@SpringBootTest
class ElasticsearchApplicationTests {//使用ItemRepository提供的方法@Autowiredprivate ItemRepository itemRepository;//单增@Testpublic void addOne(){Item item = new Item().setId(1L).setTitle("罗技有线鼠标").setBrand("罗技").setCategory("鼠标").setPrice(199.00).setImgPath("1.jpg");//把item对象新增到ES中,使用SpringDataES提供的方法itemRepository.save(item);System.out.println("单增成功!");}//单查@Testpublic void findOne(){//Optional是一个类似包装类的概念,查询的结果封装到这个类型中Optional<Item> optionalItem = itemRepository.findById(1L);System.out.println(optionalItem.get());}//批量新增@Testpublic void addMore(){List<Item> items = new ArrayList<>();items.add(new Item(2L,"雷蛇无线激光鼠标","雷蛇","鼠标",299.00,"2.jpg"));items.add(new Item(3L,"罗技双模鼠标","罗技","鼠标",299.00,"3.jpg"));items.add(new Item(4L,"罗技双模键盘","罗技","键盘",99.99,"4.jpg"));items.add(new Item(5L,"联想超薄笔记本电脑","联想","电脑",4399.00,"5.jpg"));items.add(new Item(6L,"雷蛇有线鼠标","雷蛇","鼠标",399.00,"6.jpg"));items.add(new Item(7L,"燕双飞超级无敌螺旋鼠标","燕双飞","鼠标",999.00,"7.jpg"));itemRepository.saveAll(items);System.out.println("批量新增成功");}//批量查询@Testpublic void findMore(){Iterable<Item> items = itemRepository.findAll();items.forEach(item -> System.out.println(item));}
}

 上一篇文章:如何使用Elasticsearch操作数据库呢?-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143566446下一篇文章:


http://www.ppmy.cn/devtools/133613.html

相关文章

【Python进阶】Python中的数据库交互:使用SQLite进行本地数据存储

1、数据持久化与访问效率 数据持久化是指程序运行过程中产生的数据能够长期保存&#xff0c;即使程序关闭或系统重启后仍可读取和修改。通过数据库&#xff0c;我们可以确保数据持久化的同时&#xff0c;实现数据的快速访问。例如&#xff0c;银行系统需要实时更新账户余额&am…

js三大组成部分

一&#xff0c;js三大组成部分 &#xff08;一&#xff09;组成部分&#xff1a; &#xff08;1&#xff09;ECMAScript:代表了语言的标准&#xff0c;规范&#xff0c;描述了语言的基本语法和数据类型。 &#xff08;2&#xff09;BOM:代表了浏览器。 <1>描述了浏览器的…

C/C++基础知识复习(15)

1) new 和 malloc 的区别及用法 区别&#xff1a; 类型安全&#xff1a;new 是 C 运算符&#xff0c;它会调用对象的构造函数并返回正确类型的指针&#xff1b;malloc 是 C 的函数&#xff0c;它返回的是 void*&#xff0c;需要显式转换为目标类型。初始化&#xff1a;new 在…

计算机网络——1.2计算机网络的组成

计算机网络——计算机网络的组成 前言 上一节&#xff0c;我们学习了计算机网络的基本概念&#xff0c;接下来我们来了解下计算机网络是由哪些部分组成的。 计算机网络的组成 计算机网络的组成按照不同的分类逻辑&#xff0c;组成部分也有着些许差别。 从组成部分上看 硬件 …

「QT」几何数据类 之 QVector4D 四维向量类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

【Python】爬虫通过验证码

1、将验证码下载至本地 # 获取验证码界面html url http://www.example.com/a.html resp requests.get(url) soup BeautifulSoup(resp.content.decode(UTF-8), html.parser)#找到验证码图片标签&#xff0c;获取其地址 src soup.select_one(div.captcha-row img)[src]# 验证…

多云环境的管理与优化:策略与实践

随着企业数字化转型的推进&#xff0c;越来越多的企业选择采用多云策略来提升灵活性、保障数据安全并优化成本管理。然而&#xff0c;多云环境的管理和优化需要面对诸多挑战。本文将详细探讨多云环境的管理和优化策略&#xff0c;结合实际代码示例&#xff0c;帮助运维工程师有…

新版 idea 编写 idea 插件时,启动出现 ClassNotFound

IntelliJ IDEA 2024.1.6 (Ultimate Edition) Build #IU-241.19072.14, built on August 8, 2024 Licensed to Sophia Tout Subscription is active until June 29, 2025. For educational use only. Runtime version: 17.0.111-b1207.30 amd64 Kotlin: 241.19072.14-IJ 新版本…