要在Spring Boot应用程序中集成Elasticsearch并执行增删改查操作,你可以使用Spring Data Elasticsearch。Spring Data Elasticsearch 提供了集成Elasticsearch操作的接口,是操作Elasticsearch的一个方便的方法。

以下是如何进行集成的基本步骤:

  1. 添加依赖

首先,添加spring-boot-starter-data-elasticsearch依赖到你的pom.xml文件中。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <!-- 其他依赖... -->
</dependencies>

如果你使用Gradle,则添加以下依赖到build.gradle文件中:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
    // 其他依赖...
}
  1. 配置Elasticsearch

application.propertiesapplication.yml中配置Elasticsearch。

application.properties 示例:

spring.elasticsearch.rest.uris=http://localhost:9200
spring.data.elasticsearch.cluster-name=myClusterName
spring.data.elasticsearch.repositories.enabled=true

确保Elasticsearch实例在指定的URI和端口上运行。

  1. 创建实体类

创建一个实体类用于与Elasticsearch文档映射。

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

@Document(indexName = "user")
public class User {

    @Id
    private String id;
    private String name;
    private String email;
    
    // 省略getter和setter方法
}
  1. 创建Repository接口

创建一个继承ElasticsearchRepository的接口,Spring Data Elasticsearch 会为你提供基本的CRUD操作。

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

public interface UserRepository extends ElasticsearchRepository<User, String> {
}
  1. 编写服务层

在服务层实现具体的业务逻辑。

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

import java.util.Optional;

@Service
public class UserService {

    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }

    public Optional<User> findById(String id) {
        return userRepository.findById(id);
    }

    public Iterable<User> findAllUsers() {
        return userRepository.findAll();
    }

    public void deleteUser(String id) {
        userRepository.deleteById(id);
    }
}
  1. 创建控制器

创建一个REST控制器来处理HTTP请求。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    @GetMapping("/{id}")
    public Optional<User> getUserById(@PathVariable String id) {
        return userService.findById(id);
    }

    @GetMapping
    public Iterable<User> getAllUsers() {
        return userService.findAllUsers();
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable String id) {
        userService.deleteUser(id);
    }
}
  1. 运行你的Spring Boot应用

使用Spring Boot Maven插件或者直接从主类启动你的应用。

mvn spring-boot:run

或者

import org.springframework.boot.SpringApplication;

public class ElasticsearchDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ElasticsearchDemoApplication.class, args);
    }
}

现在,你的Spring Boot应用程序将连接到Elasticsearch,并可以使用REST API来执行增删改查操作。

请注意,你需要确保Elasticsearch已安装并运行在指定的地址和端口上。此外,根据Elasticsearch服务器的版本,可能还需要对依赖版本做一些调整。Spring Data Elasticsearch应与Elasticsearch服务器的版本兼容。