Springboot 集成 ElasticSearch 踩坑
2024-10-09 07:56:40
这里只涉及到基础使用
- 导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
- 配置
application.yml
server:
port: 8069
spring:
data:
elasticsearch:
cluster-nodes: 127.0.0.1:9300 #配置java访问elasticsearch端口
repositories:
enabled: true
cluster-name: elasticsearch #需与elasticsearch配置文件的名字一致,也可以不配置
- 创建普通的entity
@Data
@Document(indexName = "索引名称(只能小写)",type = "类型名")
public class Study{
private Integer id;
private String name;
private String sex;
private Integer age;
}
- 创建仓库
StudyRepository
并继承ElasticsearchCrudRepository<Study, Integer>
public interface StudyRepository extends ElasticsearchCrudRepository<Study, Integer> {
}
- 创建service和实现类,以及Controller
public interface StudyService {
Study save(Study study);
void delete(Integer id);
Study update(Study study);
Study get(Integer id);
Page<Study> getAll(String name,Pageable pageable);
}
@Service
@RequiredArgsConstructor
public class StudyServiceImpl implements StudyService {
private final StudyRepository studyRepository;
private final ElasticsearchTemplate elasticsearchTemplate;
@Override
public Study save(Study study) {
return studyRepository.save(study);
}
@Override
public void delete(Integer id) {
studyRepository.deleteById(id);
}
@Override
public Study update(Study study) {
Optional<Study> studyOptional = studyRepository.findById(study.getId());
studyOptional.ifPresent(s -> {
studyRepository.save(study);
});
return study;
}
@Override
public Study get(Integer id) {
return studyRepository.findById(id).orElse(null);
}
/**
* 根据name查询(使用template进行复杂查询)
*/
@Override
public Page<Study> getAll(String name, Pageable pageable) {
NativeSearchQueryBuilder query = new NativeSearchQueryBuilder().withPageable(pageable);
if (!StringUtils.isEmpty(name)) {
query.withQuery(QueryBuilders.matchQuery("name", name));
}
NativeSearchQuery buildQuery = query.build();
List<Study> studies = elasticsearchTemplate.queryForList(buildQuery , Study.class);
return new PageImpl<>(studies);
}
注意:
目前
ElasticSearch
没有7.2的jar包~~使用7.2会报找不到nodes,建议降低版本~ElasticSearch
提供的可视化工具Kibana
的版本必须与你安装的ElasticSearch
版本一一对应,不然无法启动~
参考:
最新文章
- BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]
- 连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
- Hbuilder快捷键
- 【转】我的技术学习方法 — Anytao
- 51nod 1622 集合对[算法马拉松19 C]
- MVC中获取来自控制器名称与动作的方法
- Linux服务器管理: 系统的进程管理后台进程的切换和相关命令
- Spring源码学习之:ClassLoader学习(3)
- mybatis关联查询,一对一,一对多
- Libsvm的MATLAB调用和交叉验证
- InstallShield Clone dialog
- linux下一个apache+tomcat负载均衡和集群
- 【Android Developers Training】 53. 打印HTML文档
- Django 个性化管理员站点
- linux 关机命令shutdown
- python selenium2 中的显示等待WebDriverWait与条件判断expected_conditions举例
- keras 入门整理 如何shuffle,如何使用fit_generator 整理合集
- day09 小练习 斐波那契数列 文件
- 对Dataguard的三种模式的理解
- Eclipse智能提示设置
热门文章
- 报错:The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.
- Python--numpy中的tile()函数
- 使用turtle库绘制一个叠加等边三角形
- Java实现 LeetCode 810 黑板异或游戏 (分析)
- Java实现 蓝桥杯 算法提高 宰羊
- Java实现 蓝桥杯 算法提高 最长滑雪道
- java实现第六届蓝桥杯生成回文数
- LB服务,软LB的服务能力(下)
- 剑指Offer之和为S的连续正数序列
- iOS -UIColor随机生成颜色的方法