SpringBoot 快速整合spring-data-elasticsearch

本文介绍了如何在SpringBoot2.5.15项目中使用spring-boot-starter-data-elasticsearch进行Elasticsearch的配置,包括添加依赖、设置属性、创建文档实体、Repository接口以及简单的CRUD操作。同时提到了对于复杂操作的建议和官方推荐的JavaClient使用情况。

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"})

同 spring.data.elasticsearch.repositories.enabled=true 功能相同

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操作,或者同步单个索引数据(比如从Canal 订阅 Index 对应的数据变更)。
对于业务比较复杂的操作建议还是需要使用其他的java client来补充操作了,比如HighLevelRestClient,
不过大家要了解的是es官方已经不推荐使用Rest Client和Transport Client了,并且会在es8.x时废除。
从7.15版本开始更加推荐使用Java Client,但是因为学习成本、使用习惯以及很多公司仍然在使用6.x或更早版本的es,
所以在es7.x版本或更早,HighLevelRestClient 还是不错的选择


 

<think>好的,我现在需要解决用户关于Spring Boot 2.3.4与spring-boot-starter-data-elasticsearch兼容的Elasticsearch版本的问题。首先,我应该回忆一下Spring Boot版本和Elasticsearch之间的兼容性通常是如何确定的。 记得Spring Boot的官方文档中会列出每个版本对应的依赖项版本,这通常在“Dependency Versions”部分。用户提到的是Spring Boot 2.3.4,那么我需要找到该版本对应的spring-boot-starter-data-elasticsearch所依赖的Elasticsearch客户端版本。 接下来,可能需要查看Spring Boot 2.3.x的文档或发布说明,特别是关于Elasticsearch的部分。例如,Spring Boot 2.3.x可能默认使用Elasticsearch 6.x或7.x的客户端。但具体到2.3.4这个补丁版本,是否有变化呢?一般来说,小版本之间的依赖版本可能不会有太大变动,但最好确认具体的兼容性信息。 另外,spring-boot-starter-data-elasticsearch依赖于Elasticsearch的Java客户端,而客户端的版本需要与Elasticsearch服务端版本匹配。例如,Elasticsearch Java High Level REST Client的版本通常需要与Elasticsearch服务端版本一致,或者遵循一定的兼容性矩阵。 可能需要参考Spring Data Elasticsearch的版本,因为spring-boot-starter-data-elasticsearch会间接依赖它。Spring Boot 2.3.4对应的Spring Data版本应该是某个特定的发布版本,例如Spring Data Elasticsearch 3.3.x或4.0.x,而不同版本的Spring Data Elasticsearch支持的Elasticsearch版本不同。 例如,Spring Data Elasticsearch 3.x可能支持Elasticsearch 6.x,而4.x支持7.x。因此,需要确定Spring Boot 2.3.4中使用的Spring Data Elasticsearch版本,然后查找该版本对应的Elasticsearch兼容性。 查阅资料,Spring Boot 2.3.4.RELEASE对应的Spring Data版本应为Neumann-SR5,对应Spring Data Elasticsearch 3.3.x。根据Spring Data Elasticsearch文档,3.3.x版本兼容Elasticsearch 6.8.x到7.6.x。但需要注意,Java客户端版本可能需要与服务端版本一致,可能推荐使用6.8.x或7.x中的某个特定版本。 但有时候官方会有明确的说明,例如在Spring Boot的官方文档中,可能会有明确的兼容性列表。例如,Spring Boot 2.3.x的参考文档可能指出spring-boot-starter-data-elasticsearch默认支持Elasticsearch 7.6.2。因此,用户应该使用与该客户端版本对应的Elasticsearch服务端版本,即7.6.2。 不过,也有可能存在一定的版本弹性,即客户端可以兼容同一主版本的不同小版本。例如,7.x的客户端可能兼容7.x的所有服务端版本,但最好严格匹配。 另外,用户提供的引用信息中有关于MongoDB的配置,这可能无关,但需要注意是否有可能混淆了不同模块的配置。确保引用的正确性。 总结,我需要给出Spring Boot 2.3.4对应的Elasticsearch版本,并建议用户查阅官方文档或相关参考资料以确认。此外,可能需要说明如何找到这些信息,例如通过查看Spring Boot的依赖管理部分,或者Spring Data Elasticsearch的版本兼容性表格。</think>Spring Boot 2.3.4 中,`spring-boot-starter-data-elasticsearch` 默认兼容的 Elasticsearch 服务端版本为 **7.6.2**。该版本对应的客户端为 Elasticsearch High Level REST Client 7.6.2[^1]。 ### 版本兼容性验证方法 1. **查看Spring Boot官方文档** Spring Boot每个版本的文档中会明确列出依赖库的版本。例如,Spring Boot 2.3.4对应的依赖管理文件(`spring-boot-dependencies`)中定义了Elasticsearch客户端的版本: ```xml <elasticsearch.version>7.6.2</elasticsearch.version> ``` 此版本号表示Spring Boot默认集成的Elasticsearch客户端版本。 2. **客户端与服务端版本匹配原则** Elasticsearch要求Java客户端的版本必须与服务端版本**严格一致**。若服务端为7.6.2,则客户端必须使用7.6.2的High Level REST Client[^2]。 3. **特殊情况处理** - 若需使用其他Elasticsearch版本(如7.x系列的其他小版本),需在项目中显式指定`elasticsearch.version`属性: ```properties # application.properties elasticsearch.version=7.9.3 ``` - 注意:跨主版本(如Elasticsearch 8.x)可能因协议变更导致不兼容。 ### 示例配置 在`pom.xml`中,依赖关系如下: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 默认关联的Elasticsearch客户端版本由Spring Boot父项目控制[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值