网站首页 > 技术教程 正文
Elasticsearch是一个基于Apache Lucene开发的的搜索服务,提供了一个分布式多用户能力的全文搜索引擎,并基于RESTful web接口。支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等功能。那么如何在SpringBoot项目中整合ElasticSearch来完成数据的存储呢?下面我们就来看看。关于ElasticSearch的安装操作,在之前的分享中已经详细介绍了。有兴趣的读者可以自行查看Linux中如何安装ElasticSearch
这里需要特别说明在高版本的ElasticSearch对于数据的处理方式与低版本的处理方式是不同的,并且,在Spring Boot中所支持的ElasticSearch客户端版本也是有所差异的。这里演示的是基于 Spring Boot 2.1.4.RELEASE 版本和ElasticSearch 6.8.0的版本处理方式。
依赖和配置
添加Elasticsearch的依赖到pom.xml文件中。
<parent>
<artifactId>spring-boot-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.4.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
在配置文件文件中配置ElasticSearch的连接
spring.data.elasticsearch.cluster-name=my-cluster
spring.data.elasticsearch.cluster-nodes=192.168.1.202:9300
这里需要注意,在高版本的SpringBoot配置中已经不支持这样的配置操作,需要注意的实,在这个配置中如果是通过ELK调用则添加的端口是9200,如果是通过Java程序调用则配置的连接端口是9300。
具体实现
@Document(indexName = "my_index", type = "my_type")
public class MyDocument {
@Id
private String id;
private String name;
private String description;
// 省略构造函数、getter和setter
}
继承ElasticsearchRepository接口实现数据访问层代码
public interface MyDocumentRepository
extends ElasticsearchRepository<MyDocument, String> {
}
编写服务层代码
@Service
public class MyDocumentService {
@Autowired
private MyDocumentRepository repository;
public MyDocument save(MyDocument document) {
return repository.save(document);
}
public Iterable<MyDocument> findAll() {
Iterable<MyDocument> all = repository.findAll();
return all;
}
public MyDocument findById(String id) {
return repository.findById(id).orElse(null);
}
public void deleteById(String id) {
repository.deleteById(id);
}
}
编写Controller类进行测试
@RestController
@RequestMapping("/documents")
public class MyDocumentController {
@Autowired
private MyDocumentService service;
@PostMapping
public MyDocument create(@RequestBody MyDocument document) {
return service.save(document);
}
@GetMapping
public Iterable<MyDocument> getAll() {
Iterable<MyDocument> iterable = service.findAll();
return iterable;
}
@GetMapping("/{id}")
public MyDocument getById(@PathVariable String id) {
return service.findById(id);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable String id) {
service.deleteById(id);
}
}
以上代码示例演示了如何使用Spring Boot整合Elasticsearch实现数据存储。
调用接口进行测试
获取列表
总结
在上面的例子中,通过SpringBoot 2.1.4与ElasticSearch6.8.0完成了整合,如果想要适配更高版本的ElasticSearch或者是Spring Boot ,在过程中一定注意对于版本兼容性的选择。
猜你喜欢
- 2025-01-12 Spring Boot RESTful API设计:最佳实践指南
- 2025-01-12 由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource
- 2025-01-12 详细介绍一下Spring Boot中如何使用Hive?
- 2025-01-12 OGG同步到Kafka
- 2025-01-12 由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
- 2025-01-12 【从零开始】5. 向量数据库选型与搭建
- 2025-01-12 Spring Boot 项目轻松集成 Redis
- 2025-01-12 How China's Drone Manufacturers Leapfrog From Latecomers to Global Leaders
- 2025-01-12 Spring Boot与MyBatis:简化数据库操作
- 2025-01-12 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈
你 发表评论:
欢迎- 01-12Spring Boot RESTful API设计:最佳实践指南
- 01-12由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource
- 01-12详细介绍一下Spring Boot中如何使用Hive?
- 01-12OGG同步到Kafka
- 01-12由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
- 01-12【从零开始】5. 向量数据库选型与搭建
- 01-12Spring Boot 项目轻松集成 Redis
- 01-12How China's Drone Manufacturers Leapfrog From Latecomers to Global Leaders
- 最近发表
-
- Spring Boot RESTful API设计:最佳实践指南
- 由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource
- 详细介绍一下Spring Boot中如何使用Hive?
- OGG同步到Kafka
- 由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
- 【从零开始】5. 向量数据库选型与搭建
- Spring Boot 项目轻松集成 Redis
- How China's Drone Manufacturers Leapfrog From Latecomers to Global Leaders
- Spring Boot与MyBatis:简化数据库操作
- SpringBoot整合ElasticSearch实现数据存储?
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)