springboot整合Elasticsearch

1. 确保POM文件依赖正确

首先,确保你在pom.xml文件中正确地添加了Spring Data Elasticsearch和Elasticsearch的依赖:

XML 复制代码
<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Data Elasticsearch -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>

    <!-- Elasticsearch client -->
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>7.17.6</version>
    </dependency>

</dependencies>

2. 配置Elasticsearch连接

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

java 复制代码
spring.data.elasticsearch.client.reactive.endpoints=localhost:9200 
spring.data.elasticsearch.client.reactive.use-ssl=false
spring.elasticsearch.uris=http://localhost:9200

3. 创建Elasticsearch实体类

创建一个名为Product的实体类:

java 复制代码
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Data
@Document(indexName = "product")
public class Product {
    @Id
    private String id;
    private String name;
    private Double price;
}

4. 创建存储库接口

创建一个名为ProductRepository的存储库接口

java 复制代码
import com.example.demo.model.Product;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProductRepository extends ElasticsearchRepository<Product, String> {
}

5. 创建控制器

创建一个名为ProductController的REST控制器,定义基本的CRUD操作:

java 复制代码
import com.example.demo.model.Product;
import com.example.demo.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Optional;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductRepository productRepository;

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productRepository.save(product);
    }

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable String id) {
        Optional<Product> product = productRepository.findById(id);
        return product.orElse(null);
    }

    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable String id, @RequestBody Product product) {
        product.setId(id);
        return productRepository.save(product);
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable String id) {
        productRepository.deleteById(id);
    }

    @GetMapping
    public Iterable<Product> getAllProducts() {
        return productRepository.findAll();
    }
}

6. 启动Elasticsearch服务

确保你已经在本地或远程启动了Elasticsearch服务,默认端口为9200

7. 运行Spring Boot应用

启动Spring Boot应用,访问以下端点测试基本的CRUD操作:

java 复制代码
创建产品(POST请求):http://localhost:8080/products
获取产品(GET请求):http://localhost:8080/products/{id}
更新产品(PUT请求):http://localhost:8080/products/{id}
删除产品(DELETE请求):http://localhost:8080/products/{id}
获取所有产品(GET请求):http://localhost:8080/products

测试请求

创建产品,post请求不指定id会自动生成id并返回
java 复制代码
POST http://localhost:8080/products
Content-Type: application/json

{
  "name": "Laptop",
  "price": 1200.00
}

返回结果:这里的id是自动生成的id,给下面的接口使用

java 复制代码
{
    "id": "r00DPpIBab4_XTIP0FK9",
    "name": "Laptop",
    "price": 1200.0
}
获取产品
java 复制代码
GET http://localhost:8080/products/{id}

即

GET http://localhost:8080/products/r00DPpIBab4_XTIP0FK9
更新产品
java 复制代码
PUT http://localhost:8080/products/{id} 
Content-Type: application/json 
{ "name": "Laptop Pro", "price": 1500.00 }
删除产品
java 复制代码
DELETE http://localhost:8080/products/{id}
获取所有产品
java 复制代码
GET http://localhost:8080/products
相关推荐
进阶的架构师23 分钟前
详解 Spring Boot 的 RedisAutoConfiguration 配置
spring boot·后端·bootstrap
山山而川粤30 分钟前
体育课评分系统小程序的设计
java·spring boot·后端·学习·小程序
pan_junbiao1 小时前
SpringBoot使用@Slf4j注解实现日志输出
java·spring boot·spring
计算机学姐2 小时前
基于SpringBoot+Vue的高校实习管理系统
java·vue.js·spring boot·后端·spring·intellij-idea·mybatis
yang-23072 小时前
ElasticSearch的安装与使用
大数据·elasticsearch·json·jenkins
百成Java2 小时前
基于Spring Boot的旅游网站
java·开发语言·spring boot·后端·mysql
悲伤的创可贴2 小时前
Elasticsearch讲解
大数据·elasticsearch·搜索引擎
编啊编程啊程3 小时前
一文上手SpringSecurity【九】
java·spring boot·redis·spring cloud·json