玩转Elasticsearch—Spring Data整合ES7.16.3

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 玩转Elasticsearch—Spring Data整合ES7.16.3

5.1 pom依赖

新建spring boot项目:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--  依赖web starter-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
复制代码

5.2 配置

配置文件:

es:
  address: 127.0.0.1
  port: 9200
复制代码

配置类:

@Configuration
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {
    @Value("${es.address}")
    private String address;
    @Value("${es.port}")
    private Integer port;
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final String ES_URL = address + ":" + port;
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo(ES_URL)
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}
复制代码

5.3 编码测试

@SpringBootTest
class SpEsApplicationTests {
    @Autowired
    private ElasticsearchOperations elasticsearchOperations;
    @Test
    void save() {
        Student student = new Student(3L, "ww", 13, "上海");
        IndexQuery indexQuery = new IndexQueryBuilder()
                .withId(student.getId().toString())
                .withObject(student)
                .build();
        String str = elasticsearchOperations.index(indexQuery,
                IndexCoordinates.of("student"));
        System.out.println(str);
    }
    @Test
    void findById() {
        Student student = elasticsearchOperations.get("1", Student.class, IndexCoordinates.of("student"));
        System.out.println(student);
    }
    @Test
    void findAll() {
        SearchHits<Student> search = elasticsearchOperations.search(Query.findAll(), Student.class, IndexCoordinates.of("student"));
        for (SearchHit<Student> hit : search) {
            System.out.println(hit.getContent());
        }
    }
    @Test
    void findBySome(){
        Criteria criteria = new Criteria("name").is("zs");
        Query query = new CriteriaQuery(criteria);
        SearchHits<Student> search = elasticsearchOperations.search(query, Student.class, IndexCoordinates.of("student"));
        for (SearchHit<Student> hit : search) {
            System.out.println(hit.getContent());
        }
    }
    @Test
    void findBySome2(){
        Criteria contains = new Criteria("name").contains("s");
        Query query = new CriteriaQuery(contains);
        SearchHits<Student> search = elasticsearchOperations.search(query, Student.class, IndexCoordinates.of("student"));
        for (SearchHit<Student> hit : search) {
            System.out.println(hit.getContent());
        }
    }
}


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
5月前
|
NoSQL 安全 Java
深入理解 RedisConnectionFactory:Spring Data Redis 的核心组件
在 Spring Data Redis 中,`RedisConnectionFactory` 是核心组件,负责创建和管理与 Redis 的连接。它支持单机、集群及哨兵等多种模式,为上层组件(如 `RedisTemplate`)提供连接抽象。Spring 提供了 Lettuce 和 Jedis 两种主要实现,其中 Lettuce 因其线程安全和高性能特性被广泛推荐。通过手动配置或 Spring Boot 自动化配置,开发者可轻松集成 Redis,提升应用性能与扩展性。本文深入解析其作用、实现方式及常见问题解决方法,助你高效使用 Redis。
525 4
|
2月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
327 2
|
4月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
170 32
|
5月前
|
SQL Java 编译器
深入理解 Spring Data JPA 的导入与使用:以 UserRepository为例
本文深入解析了 Spring Data JPA 中 `UserRepository` 的导入与使用。通过示例代码,详细说明了为何需要导入 `User` 实体类、`JpaRepository` 接口及 `@Repository` 注解。这些导入语句分别用于定义操作实体、提供数据库交互方法和标识数据访问组件。文章还探讨了未导入时的编译问题,并展示了实际应用场景,如用户保存、查询与删除操作。合理使用导入语句,可让代码更简洁高效,充分发挥 Spring Data JPA 的优势。
329 0
|
8月前
|
存储 NoSQL Java
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
184 21
|
11月前
|
存储 Java API
如何使用 Java 记录简化 Spring Data 中的数据实体
如何使用 Java 记录简化 Spring Data 中的数据实体
111 9
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
XML Java 数据库连接
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
Spring Boot的数据访问之Spring Data JPA以及Hibernate的实战(超详细 附源码)
658 0
|
Java Spring
Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)
Spring Boot利用Spring Data JPA实现排序与分页查询实战(附源码,超详细)
595 0
|
Java Spring 数据库
怎样动动手指就能实现数据操作?Spring Data JPA背后的魔法揭秘
【8月更文挑战第31天】在Java开发中,数据库交互至关重要。传统的JDBC操作繁琐且难维护,而Spring Data JPA作为集成JPA的数据访问层解决方案,提供了CRUD等通用操作接口,显著减少代码量。通过继承`JpaRepository`,开发者能轻松实现数据的增删改查,甚至复杂查询和分页也不再困难。本文将通过示例详细介绍如何利用Spring Data JPA简化数据访问层的开发,提升代码质量和可维护性。
135 0