SpringBoot集成Solr

在上一篇中已经讲解了如何使用docker安装Solr,本篇讲解一下在SpringBoot项目中如何简单集成solr。在你现有搭建的SpringBoot项目基础上增加如下的pom依赖:

<dependency>
            <groupId>com.github.magese</groupId>
            <artifactId>ik-analyzer</artifactId>
            <version>8.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
            <version>2.4.11</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>

HttpSolrClient注入

@Bean
    public HttpSolrClient solrClient() {
        CredentialsProvider provider = new BasicCredentialsProvider();
        //url为:http://ip:6016/solr/核心库名称,username和password:是solr配置的账号密码
        final URI uri = URI.create(this.uri);
        provider.setCredentials(new AuthScope(uri.getHost(), uri.getPort()),
                new UsernamePasswordCredentials(username, password));
        HttpClientBuilder builder = HttpClientBuilder.create();
        // 指定拦截器,用于设置认证信息
        builder.addInterceptorFirst(new SolrAuthInterceptor());
        builder.setDefaultCredentialsProvider(provider);
        CloseableHttpClient httpClient = builder.build();
        return new HttpSolrClient.Builder(this.uri).withHttpClient(httpClient).build();
    }

ps:这里的核心库名称建立可以参考我的上一篇安装文章了解,也可以自己在solr的web界面建立,可以把solr的核心库理解为mysql中的表,只是里面可以存储非结构化的数据 。

web界面配置core:

拦截器配置类

public class SolrAuthInterceptor implements HttpRequestInterceptor {
    @Override
    public void process(final HttpRequest request, final HttpContext context) {
        AuthState authState = (AuthState) context.getAttribute(HttpClientContext.TARGET_AUTH_STATE);
        if (authState.getAuthScheme() == null) {
            CredentialsProvider provider =
                    (CredentialsProvider) context.getAttribute(HttpClientContext.CREDS_PROVIDER);
            HttpHost httpHost = (HttpHost) context.getAttribute(HttpCoreContext.HTTP_TARGET_HOST);
            AuthScope scope = new AuthScope(httpHost.getHostName(), httpHost.getPort());
            Credentials credentials = provider.getCredentials(scope);
            authState.update(new BasicScheme(), credentials);
        }
    }
}

到了这里我们的solr集成配置就完成了,下面可以使用solr进行crud了。

1.添加

@RequiredArgsConstructor
public class SolrTest {
    private final HttpSolrClient solrClient;
    
    public  void testSolr() {
                SolrInputDocument inputDocument = new SolrInputDocument();
                //1.向文档中添加域以及对应的值
                inputDocument.addField("id", 1);
                inputDocument.addField("name", "名称");
                inputDocument.addField("content", "内容");
                //2.将文档写入索引库中
                solrClient.add(inputDocument);
                //3.提交
                solrClient.commit();
                
            }

    }

2.查询

            //2.创建查询语句
            SolrQuery query = new SolrQuery();
            //3.设置查询条件
            query.set("q", "id:"+"82991");
            //4.执行查询
            QueryResponse queryResponse = solrClient.query(query);
            //5.取文档列表
            SolrDocumentList documentList = queryResponse.getResults();
            for (SolrDocument solrDocument : documentList) {
                //打印map对象,业务处理
                System.out.println(JSONUtil.toJsonStr(solrDocument));
            }

3.删除

          //1.根据id删除索引
          solrClient.deleteById("1");
          //2.根据条件删除,此操作设置的为全部删除,也可以自定义条件删除,查询语法与web界面查询一样
          solrClient.deleteByQuery("*:*");
          solrClient.commit();

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值