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
相关推荐
h***673732 分钟前
SpringBoot整合easy-es
spring boot·后端·elasticsearch
S***26756 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
JIngJaneIL7 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
这是程序猿8 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
i***t9198 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
k***08298 小时前
【监控】spring actuator源码速读
java·spring boot·spring
一 乐8 小时前
应急知识学习|基于springboot+vue的应急知识学习系统(源码+数据库+文档)
数据库·vue.js·spring boot
vx_dmxq2119 小时前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
5***g2989 小时前
新手如何快速搭建一个Springboot项目
java·spring boot·后端
vx_vxbs6610 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea