Spring Boot整合solr进行增删查改

本文介绍了如何在Spring Boot项目中整合Solr进行数据的增删查改操作。首先创建项目,然后启动Solr服务器,接着配置Solr的实体类、POM依赖和YML文件,最后在控制层实现相关功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这也是我前段时间所学的,今天整理下发出来

1首先,我们先创建一个项目出来

这个就不用我来演示把,最基本的

2打开你solr服务器

1.1找到你solr安装程序bin目录那里
在这里插入图片描述
1.2选中后敲cmd回车弹出控制面板。在里面输出命令 solr.cmd start. 一定要注意命令之间的
间距

在这里插入图片描述
默认端口是8983. 重启服务的指令solr.cmd restart -p 8983
启动完成后就可以开始我们项目了

1.3首先建完项目后大致上是这样的
在这里插入图片描述

1.4在我们的实体类中写几个参数,因为这里我偷懒了,只写了两个,

package com.xiaogan.springbootsolr.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.solr.client.solrj.beans.Field;

/**
 * 作者: XiaoGan
 * 时间: 2020/8/26 19:14
 * 描述:
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Product {
    @Field
    private String id;

    @Field
    private String name;



}

这里你的id和name一定要和你solr配置的一样,其它参数也是

1.5差点忘记了,导个pom依赖把

<properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <!--springBoot核心依赖,捉供了核心功能-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--引入web starter启动器 常见的场景-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--solr-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
        </dependency>
        <!-- 默认 starter 会加载 solrj 进来, 下面这个可不引-->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-solr</artifactId>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
            <scope>provided</scope>
        </dependency>
        <!--junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

1.6接下来是yml文件配置

spring:
   data:
     solr:
        host: http://localhost:8983/solr/new_core


接下来就是你的控制层

package com.xiaogan.springbootsolr.contrller;

import com.xiaogan.springbootsolr.entity.Product;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * 作者: XiaoGan
 * 时间: 2020/9/1 22:17
 * 描述:
 */
@RestController
public class UserController {
    @Autowired
    private SolrClient solrClient;

    /**
     *查询
     * @throws IOException
     * @throws SolrServerException
     */
    @RequestMapping("/selectId")
    public void selectId() throws IOException, SolrServerException {
            SolrDocument solrDocument = solrClient.getById("1001");
            Product bean = solrClient.getBinder().getBean(Product.class, solrDocument);
            System.out.println("bean =" + bean);
    }

    /**
     * 删除
     * @throws IOException
     * @throws SolrServerException
     */
    @RequestMapping("/deleteId")
    public void deleteId() throws IOException, SolrServerException {
        UpdateResponse updateResponse = solrClient.deleteById("1001");
        solrClient.commit();
        int status = updateResponse.getStatus();
        System.out.println("status = " + status);
    }

    /**
     * 添加
     * @throws IOException
     * @throws SolrServerException
     */
    @RequestMapping("testId")
    public void testAddProductDocument1() throws IOException, SolrServerException {
        Product product = new Product().builder()
                .id("1001")
                .name("某某的劳斯莱斯")
                .build();
        UpdateResponse updateResponse =solrClient.addBean(product);
        solrClient.commit();
        int status = updateResponse.getStatus();
        System.out.println("status = " + status);
        updateResponse = solrClient.addBean(product);

    }
    /**
     * 修改
     */
    @RequestMapping("updateId")
    public void updateId() throws IOException, SolrServerException {
        Product product = new Product().builder()
                .id("1002")
                .name("某某的劳斯莱斯")
                .build();
        UpdateResponse updateResponse =solrClient.addBean(product);
        solrClient.commit();
        int status = updateResponse.getStatus();
        System.out.println("status = " + status);
        updateResponse = solrClient.addBean(product);

    }

}

我这个因为写的还是挺简单的,你们接下来一个个测试就行了,
也没啥东西,今天这个就到此结束了

Spring Boot整合Solr的步骤如下: 1. 首先,需要导入solr-data启动器的依赖。可以在pom.xml文件中添加以下代码: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency> ``` 这样就可以引入Spring Boot提供的Solr相关功能了。\[1\] 2. 接下来,需要配置Solr的连接信息。可以在application.yml或application.properties文件中添加以下配置: ``` spring: data: solr: host: http://127.0.0.1:8080/solr server: port: 8983 ``` 这里的host和port分别指定了Solr服务器的地址和端口。\[1\] 3. 最后,可以使用Spring Boot提供的SolrClient来操作SolrSpring Boot整合Solr提供了一个Starter:spring-boot-starter-data-solr。该Starter提供了SolrAutoConfiguration和SolrProperties两个类,其中SolrProperties用于加载以“spring.data.solr”开头的属性,SolrAutoConfiguration则负责在容器中自动配置一个SolrClient。需要注意的是,目前该SolrClient还不支持读取用户名和密码信息。\[2\] 综上所述,通过导入solr-data启动器的依赖,配置Solr的连接信息,以及使用Spring Boot提供的SolrClient,就可以实现Spring Boot整合Solr的功能了。\[1\]\[2\] #### 引用[.reference_title] - *1* [9.Spring Boot整合Solr](https://blog.youkuaiyun.com/qq_45305209/article/details/130791847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SpringBoot整合Solr](https://blog.youkuaiyun.com/qq_42192693/article/details/103864780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值