solr快速上手:整合SolrJ实现客户端操作(九)

这篇具有很好参考价值的文章主要介绍了solr快速上手:整合SolrJ实现客户端操作(九)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 引言

我们前面学习了solr的服务端基础操作,实际项目中我们还需要在客户端调用solr,就像调用数据库一样,我们可以基于solrJ来实现对solr的客户端操作

1. SolrJ简介

SolrJ 是 Solr官方提供的 Java 客户端库,主要用于与 Solr 服务器进行交互。内部封装了一组API,可以方便地实现对solr服务端的各类操作。

使用 SolrJ,可以通过编写 Java 代码来实现对 Solr 的索引操作,比如增删改查。同时,SolrJ 还支持多种查询方式,如简单查询、复杂查询、分页查询、聚合查询等。同时也包括了对solr的索引管理、权限控制等操作

2. 项目引入SolrJ

1、引入jar包:https://central.sonatype.com/artifact/org.apache.solr/solr-solrj/8.2.0

<dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>8.2.0</version>
</dependency>

2、首先创建实体类,还是以我们在前几节创建的orders核心为例

注意:这里需要给字段上加上@Field注解,其值是该字段在solr中的字段名

@Data
public class Orders {

    @Field("id")
    private Long id;
    @Field("order_no")
    private String orderNo;
    @Field("address")
    private String address;
    @Field("product_name")
    private String productName;
    @Field("remarks")
    private String remarks;
    @Field("status")
    private Integer status;
    @Field("create_user")
    private String createUser;
    @Field("create_time")
    private Date createTime;
    @Field("labels")
    private List<String> labels;

}

3、创建一个配置类SolrProperties,用户声明配置项

@ConfigurationProperties(prefix = "solr")
@Component
@Data
public class SolrProperties {

    private String host;

    private Integer connectionTimeout;
    private Integer socketTimeout;

}

4、配置文件中添加对应的配置项

# solr地址
solr.host=http://192.168.244.41:8983/solr
# 连接超时
solr.connectionTimeout=10000
# 读取超时
solr.socketTimeout=3000

5、创建bean配置类SolrConfig,用于创建solr连接bean,注意这里我们演示的是单机版的solr,集群版的需要使用CloudSolrClient

@Configuration
public class SolrConfig {

    @Resource
    private SolrProperties solrProperties;

    @Bean
    public HttpSolrClient solrClient(){
        return new HttpSolrClient.Builder(solrProperties.getHost())
                .withConnectionTimeout(solrProperties.getConnectionTimeout())
                .withSocketTimeout(solrProperties.getSocketTimeout())
                .build();
    }
}

6、创建一个测试controller, 用于演示客户端的操作,因为我们之前已经配置了通过dataimport自动同步mysql数据到solr。所以solr本身的增删改,我们这里就不演示了,只要删除数据库后会自动同步,主要演示实现查询操作

@RestController
@RequestMapping("orders")
@AllArgsConstructor
public class OrdersController {
    private final HttpSolrClient solrClient;

    @GetMapping("search")
    public List<Orders> search(String productName, String address, String remarks, String labels) throws SolrServerException, IOException {
        SolrQuery query = new SolrQuery();
        if (!StringUtils.isEmpty(productName)) {
            query.setQuery("product_name:" + productName);
        }
        if (!StringUtils.isEmpty(address)) {
            query.setQuery("address:" + address);
        }
        if (!StringUtils.isEmpty(remarks)) {
            query.setQuery("remarks:" + remarks);
        }
        if (!StringUtils.isEmpty(labels)) {
            query.setQuery("labels:" + labels);
        }
        if(StringUtils.isEmpty(query.getQuery())){
            query.setQuery("*:*");
        }
        query.setStart(0);
        query.setRows(5);
        QueryResponse response = solrClient.query("orders",query);
        List<Orders> list = response.getBeans(Orders.class);
        return list;
    }

}

7、调用测试,结果数据正常显示

solr快速上手:整合SolrJ实现客户端操作(九)

8、如果想要实现更多的操作, 可以在SolrClient类中看到支持的方法

solr快速上手:整合SolrJ实现客户端操作(九)

3. 配置集群

1、配置文件中增加zookeeper集群的地址配置,

solr.zk.host=192.168.244.42:2181,192.168.244.43:2181,192.168.244.44:2181

2、创建配置类,声明CloudSolrClient

@Configuration
public class SolrConfig {

    @Value("${solr.zk.host}")
    private String zkHost;

    @Bean
    public CloudSolrClient cloudSolrClient(){
        if(StringUtils.isEmpty(zkHost)){
            return null;
        }
        return new CloudSolrClient.Builder(Arrays.asList(zkHost.split(",")))
                .build();
    }
}

3、后续使用cloudSolrClientbean来调用solr即可

4. 总结

更多的客户端操作,还要大家自己去探索,但是直接使用SolrJ还是感觉有些复杂,能不能更加简易地实现客户端操作呢,那就要提到我们的spring-data-solr了,下一节,我们继续学习!文章来源地址https://www.toymoban.com/news/detail-495898.html

到了这里,关于solr快速上手:整合SolrJ实现客户端操作(九)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Springboot整合Socket仿微信实现群聊、私聊功能。实现客户端client,服务端server心跳维护、超时机制【一文通】

    博主介绍: ✌java资深开发工程师、Java领域优质创作者,博客之星、专注于Java技术领域和学生毕业项目实战,面试讲解跟进,高校老师/讲师/同行交流合作✌ 胡广愿景: \\\"比特星球\\\",致力于帮助底层人员找到工作, 让每个底层人员都能找到属于自己的星球。 拓展学习领域,获

    2024年02月19日
    浏览(51)
  • 十二、Feign客户端整合Hystrix服务保护

    目录 1、项目pom文件中引入feign客户端依赖 2、编写feign客户端接口,并配置fallback回调方法的类 3、编写controller,使用feign客户端进行RPC远程过程调用

    2024年02月05日
    浏览(38)
  • 网络编程3——TCP Socket实现的客户端服务器通信完整代码(详细注释帮你快速理解)

    本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下! 今天分享的内容是TCP流套接字实现的客户端与服务器的通信,一定要理解 DatagramSocket,DatagramPacket 这两个类的作用以及方法

    2024年02月12日
    浏览(60)
  • Spring Boot 整合 Redis,使用 RedisTemplate 客户端

    1.1.1 添加依赖 redis 的依赖: 1.1.2 yml 配置文件 1.1.3 Config 配置文件 1.1.4 使用示例 注入 RedisTemplate,即可操作 Redis,简单示例如下: 1.2.1 RedisTemplate 简介 RedisTemplate 是 Spring Data Redis 项目的一部分,旨在简化在Java应用程序中使用 Redis 的过程。它提供了一组简单的方法,可以在

    2024年02月09日
    浏览(258)
  • 快速搭建springboot websocket客户端

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 浏览器通过 JavaSc

    2024年02月06日
    浏览(57)
  • 开源对象存储系统minio部署配置与SpringBoot客户端整合访问

    官方介绍: MinIO 提供高性能、与S3 兼容的对象存储系统,让你自己能够构建自己的私有云储存服务。在 GNU AGPL v3 下是 100% 开源的。 部署简单,只有一个minio可执行文件。 高性能,在 32 个 NVMe 驱动器节点和 100Gbe 网络上发布的 GET/PUT 结果超过 325 GiB/秒和 165 GiB/秒。 Kubernetes原

    2024年02月09日
    浏览(44)
  • 如何快速搭建springboot+前后端分离(vue),多商户客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

    kxmalls外卖生鲜多商户,针对中小商户、企业和个人学习者开发。使用Java编码,采用SpringBoot、Mybatis-Plus等易用框架,适合个人学习研究。同时支持单机部署、集群部署,用户与店铺范围动态定位,中小商户企业可根据业务动态扩容。kxmalls使用uniapp前端框架,可同时编译到 微

    2024年01月25日
    浏览(68)
  • 使用Flutter构建ChatGPT客户端:快速入门指南

    在本篇博客文章中,我们将通过OpenAI的API构建一个简单的对话界面,与ChatGPT进行聊天。 近来OpenAI和ChatGPT的热度很高,尤其是最近发布的GPT-4。这类工具的大量使用案例已经涌现出来,但目前人们最常用ChatGPT的方式是通过chat.openai.com进行聊天。我一直在使用ChatGPT来激发灵感、

    2024年02月05日
    浏览(40)
  • Idea+maven+springboot项目搭建系列--2 整合Rabbitmq完成客户端&服务器端消息收发

    前言:本文通过springBoot -maven 框架,对Rabbitmq 进行整合,完成客户端消息的发送和消费; 1 为什么要使用Rabbitmq: RabbitMQ 是一个可靠的、灵活的、开源的消息中间件,具有以下优点: 异步通信:RabbitMQ 支持异步通信,使得消息发送者和接收者能够异步处理,提高了系统性能和

    2024年02月07日
    浏览(51)
  • 【物联网】EMQX(二)——docker快速搭建EMQX 和 MQTTX客户端使用

    在上一篇文章中,小编向大家介绍了物联网必然会用到的消息服务器EMQ,相信大家也对EMQ有了一定的了解,那么接下来,小编从这篇文章正式开始展开对EMQ的学习教程,本章节来记录一下如何对EMQ进行安装。 EMQ作为第三方中间件,可以安装到很多种平台上,比如macOS、window

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包