以下是关于 **Spring Boot** 集成 **spring-boot-starter-data-elasticsearch** 的详细代码示例和配置说明

以下是关于 Spring Boot 集成 spring-boot-starter-data-elasticsearch 的详细代码示例和配置说明,帮助您快速实现与 Elasticsearch 的集成。


1. 添加依赖

pom.xml 文件中添加 spring-boot-starter-data-elasticsearch 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

确保 Spring Boot 版本与 Elasticsearch 版本兼容。例如,Spring Boot 2.x 通常与 Elasticsearch 6.x 或 7.x 兼容。


2. 配置 Elasticsearch 连接

application.ymlapplication.properties 文件中配置 Elasticsearch 的连接信息:

spring:
  data:
    elasticsearch:
      cluster-name: elasticsearch  # 集群名称
      cluster-nodes: 192.168.1.33:9300  # 集群节点地址和端口
      repositories:
        enabled: true
      properties:
        transport:
          tcp:
            connect_timeout: 120s  # 连接超时时间

如果是单机模式,可以直接配置 spring.elasticsearch.rest.uris

spring:
  elasticsearch:
    rest:
      uris: http://localhost:9200

3. 定义实体类

使用 @Document 注解定义 Elasticsearch 索引和映射:

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Data
@Document(indexName = "blog_1")  // 索引名称
public class Blog {
   
    @Id
    private String id;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")  // 使用 IK 分词器
    private String title;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String content;

    @Field(type = FieldType.Date)
    private Date publishDate;
}

4. 创建 Repository 接口

继承 ElasticsearchRepository 接口,定义 CRUD 操作和自定义查询方法:

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

public interface BlogRepository extends ElasticsearchRepository<Blog, String> {
   
    List<Blog> findByTitle(String title);  // 根据标题查询
    List<Blog> findByContentContaining(String keyword);  // 根据内容模糊查询
}

5. 业务逻辑中使用 Repository

在 Service 或 Controller 中使用 BlogRepository 执行 Elasticsearch 操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BlogService {
   
    @Autowired
    private BlogRepository blogRepository;

    public void saveBlog(Blog blog) {
   
        blogRepository.save(blog);
    }

    public List<Blog> searchByTitle(String title) {
   
        return blogRepository.findByTitle(title);
    }

    public List<Blog> searchByContent(String keyword) {
   
        return blogRepository.findByContentContaining(keyword);
    }
}

6. 版本兼容性问题及解决方案

  • 问题:Spring Boot 和 Elasticsearch 版本不兼容可能导致运行时异常,例如 type is missing 错误。
  • 解决方案:确保 Spring Boot 和 Elasticsearch 版本匹配。例如:
    • Spring Boot 2.x 推荐使用 Elasticsearch 6.x 或 7.x。
    • 如果使用 Elasticsearch 7.x,注意 @Document 注解中的 type 属性已被废弃。

7. 中文分词器配置

如果需要支持中文分词,可以集成 IK 分词器:

  1. 下载与 Elasticsearch 版本匹配的 IK 分词器插件。
  2. 在实体类的字段中指定分词器:
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String content;

8. 总结

通过以上步骤,您可以快速实现 Spring Boot 与 Elasticsearch 的集成,并完成数据的存储、查询等操作。如果需要更详细的配置或解决特定问题,可以参考 Spring Data Elasticsearch 官方文档 或上述来源。

在Spring Boot项目中,想要集成Elasticsearch,你需要在项目的 pom.xml 文件中添加 spring-boot-starter-data-elasticsearch 依赖。以下是添加依赖的一个示例:

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Data Elasticsearch -->
    <dependency>
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值