SpringBoot 快速整合spring-data-elasticsearch

spring-boot.version : 2.5.15

1.引入依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

2.配置application.properties

spring.elasticsearch.rest.uris=http://127.0.0.1:9200

spring.data.elasticsearch.repositories.enabled=true

spring.data.elasticsearch.client.reactive.endpoints=127.0.0.1:9200

3.启动类添加注解:@EnableElasticsearchRepositories(basePackages = {"com.xxx.dao"})

4.编写文档对象实体类

@Data

@Document(indexName = "products", createIndex = true)

public class Product implements Serializable {

private static final long serialVersionUID = -7509473661142683567L;

@Id

private Long id;

@Field(type = FieldType.Keyword)

private String title;

@Field(type = FieldType.Float)

private Double price;

@Field(type = FieldType.Text)

private String desc;

}

5.编写 Repository 接口 - @EnableElasticsearchRepositories 注解要去扫描的接口

import org.springframework.data.domain.Page;

import org.springframework.data.domain.Pageable;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import org.springframework.stereotype.Repository;

import com.sky.biz.doc.Product;

@Repository -- 该注解一般可以省略

public interface ProductRepository extends ElasticsearchRepository<Product, Long> {

Page<Product> findByTitle(String word, Pageable pageable);

}

6.CRUD - 业务操作

@Autowired

private ProductRepository productRepository;

@Test

public void testSave() {

Product product = new Product();

product.setId(1L);

product.setTitle("Java虚拟机调优实战");

product.setPrice(36.00);

product.setDesc("图灵奖获奖图书");

Product result = productRepository.save(product);

System.out.println("保存成功:" + JSONObject.toJSONString(result));

}

@Test

public void testQuery() {

Optional<Product> productOptional = productRepository.findById(1L);

if(productOptional.isPresent()) {

Product product = productOptional.get();

System.out.println("ES查询结果:" + JSONObject.toJSONString(product));

}

}

7.重要说明:

spring-data-elasticsearch 一般主要用于简单对象的CRUD操作,

对于业务比较复杂的操作建议还是需要使用其他的java client来补充操作了,比如HighLevelRestClient,

不过大家要了解的是es官方已经不推荐使用Rest Client和Transport Client了,并且会在es8.x时废除。

从7.15版本开始更加推荐使用Java Client,但是因为学习成本、使用习惯以及很多公司仍然在使用6.x或更早版本的es,

所以在es7.x版本或更早,HighLevelRestClient 还是不错的选择

相关推荐
一 乐6 分钟前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游
YDS82914 分钟前
苍穹外卖 —— Spring Cache和购物车功能开发
java·spring boot·后端·spring·mybatis
苍老流年14 分钟前
1. SpringBoot初始化器ApplicationContextInitializer使用与源码分析
java·spring boot·后端
星光一影14 分钟前
基于SpringBoot智慧社区系统/乡村振兴系统/大数据与人工智能平台
大数据·spring boot·后端·mysql·elasticsearch·vue
不爱编程的小九九15 分钟前
小九源码-springboot103-踏雪阁民宿订购平台
java·开发语言·spring boot
Elieal16 分钟前
Spring 框架核心技术全解析
java·spring·sqlserver
组合缺一17 分钟前
(对标 Spring)OpenSolon v3.7.0, v3.6.4, v3.5.8, v3.4.8 发布(支持 LTS)
java·后端·spring·web·solon
凸头28 分钟前
Spring Boot接收前端参数的注解总结
前端·spring boot·后端
♡喜欢做梦39 分钟前
Spring IOC
java·后端·spring
摇滚侠1 小时前
Spring Boot3零基础教程,Reactive-Stream 发布订阅写法,笔记104 笔记105
java·spring boot·笔记