SpringBoot集成Solr(一)保存数据到Solr

SpringBoot集成Solr(一)保存数据到Solr

  • 添加依赖

    <!--SpringBoot中封装过的Solr依赖-->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId><version>2.4.10</version>
    </dependency><!--实体映射注解@Field-->
    <dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>8.9.0</version>
    </dependency>
    
    • 若使用了上面data-solr的依赖,则在使用@Field注解时需要额外引入下面solr-solrj依赖
    • 但是若直接引用solr-solrj依赖则可以不引用上面data-solr依赖.。
  • 添加配置文件

    • 方式一:使用spring内置data-solr的配置方式
    spring:data:solr:host: http://localhost:8983/solr/new_core
    
    • 若配置文件使用上面方式指定Solr地址,则可以通过下面代码配置solrClient

      @Configuration
      @EnableConfigurationProperties(SolrProperties.class)
      public class SolrConfig {@Beanpublic SolrClient solrClient(SolrProperties properties) {return new HttpSolrClient.Builder(properties.getHost()).withConnectionTimeout(3000).withSocketTimeout(3000).build();}}
      
    • 注意:

      使用这种方式必须要有@EnableConfigurationProperties(SolrProperties.class)作用是读取yml文件中配置的solr地址。

    • 方式二:自定义方式配置

    solr:#搜索引擎服务器地址url: http://192.168.100.34:8983/solr/new_core#连接搜索引擎服务器超时时间(毫秒)connectionTimeout: 5000
    
    • 配置solrClient

      @Configuration
      public class SolrConfig {/*** 搜索引擎服务器地址*/@Value("${solr.url}")private String url;/*** 连接搜索引擎服务器超时时间(毫秒)*/@Value("${solr.connectionTimeout}")private int connectionTimeout;@Beanpublic SolrClient solrClient() {return new HttpSolrClient.Builder(url).withConnectionTimeout(connectionTimeout).withSocketTimeout(connectionTimeout).build();}
      
  • 使用示例:

    • 创建用于映射solr中字段的实体::
    @Data
    public class KnowledgeIk implements Serializable {private static final long serialVersionUID = 7552668827510919451L;@Fieldprivate String id;/*** 作者*/@Fieldprivate String creationBy_s;/*** 摘要*/@Fieldprivate String summary_ik;/*** 内容*/@Fieldprivate String content_ik;
    }
    
    • 将实体KnowledgeIk保存到Solr
    @Service
    public class KmKnowledgeServiceImpl implements IKmKnowledgeService {/*** solr服务*/@Resourceprivate SolrClient solrClient;@Overridepublic R saveKnowledge(KmKnowledge km) {List<KnowledgeIk> docs = new ArrayList<KnowledgeIk>();KnowledgeIk knowledgeIk = new KnowledgeIk();knowledgeIk.setId(Func.toStr(km.getId()));knowledgeIk.setCreationBy_s(km.getCreationby());knowledgeIk.setSummary_ik(km.getSummary());knowledgeIk.setContent_ik(km.getContent());docs.add(knowledgeIk);try {//添加或更新多个文档UpdateResponse addBeans = solrClient.addBeans(docs);solrClient.optimize();solrClient.commit();} catch (Exception e) {log.error("Save knowledge to solr error.", e);}}}
    
    • Controller层:
    @Resource
    private IKmKnowledgeService kmKnowledgeService;@PostMapping("/save")	
    public R save(@Valid @RequestBody KmKnowledge kmKnowledge) {return kmKnowledgeService.saveKnowledge(kmKnowledge);
    }
    
    • 测试结果:

    在这里插入图片描述

    • 注意:这里只列出了部分字段属性和代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/43982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组详解

1. 一维数组的创建和初始化 1.1 数组的创建 数组是一组相同类型元素的集合。 数组的创建方式&#xff1a; type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组的大小 数组创建的实例&#xff1a; //代码1 int a…

STM32 PB9的外部中断

STM32F103中&#xff0c;外部中断的IRQHandler&#xff0c;EXTI0至EXTI1都是单独的&#xff0c;如图1所示&#xff1b;而从EXTI5至9则共用一个&#xff0c;如图2所示。这些可以通过CtrlF在全工程内查找。 图1 图2 以PB9为例&#xff0c;宏定义可如下配置&#xff1a; // 定义…

【Lua】(一)VSCode 搭建 Lua 开发环境

前言 最近在找工作&#xff0c;基本所有的岗位都会问到 Lua&#xff08;甚至拼 UI 的都要求会 Lua&#xff09;&#xff0c;咱能怎么办呢&#xff0c;咱也只能学啊…… 工欲善其事&#xff0c;必先利其器。第一步&#xff0c;先来把环境配置好吧&#xff01; 当前适用版本&a…

图数据库_Neo4j学习cypher语言_常用函数_关系函数_字符串函数_聚合函数_数据库备份_数据库恢复---Neo4j图数据库工作笔记0008

然后再来看一些常用函数,和字符串函数,这里举个例子,然后其他的 类似 可以看到substring字符串截取函数 可以看到截取成功 聚合函数 这里用了一个count(n) 统计函数,可以看到效果 关系函数,我们用过就是id(r) 可以取出对应的r的id来这样..

学习电工有哪些好处?在哪学习电工?

学习电工有哪些好处&#xff1f;在哪学习电工&#xff1f;学习电工可以做什么&#xff1f;优势有哪些&#xff1f; 学习电工可以做什么&#xff1f;学习电工有哪些好处&#xff1f; 就业去向&#xff1a;可在企业单位从事电气设备的安装、调试、操作、维护等工作&#xff0c;…

“保姆级”考研下半年备考时间表

7月-8月 确定考研目标与备考计划 暑假期间是考研复习的关键时期&#xff0c;需要复习的主要内容有&#xff1a;重点关注重要的学科和专业课程&#xff0c;复习相关基础知识和核心概念。制定详细的复习计划并合理安排每天的学习时间&#xff0c;增加真题练习熟悉考试题型和答题技…

【框架类】—MVVM框架

一、MVVM框架有哪些 Vue.jsReact.jsAngular.js 二、对MVVM的认识 1. MVC是什么 全称 Model View Controller, 它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离 2. MVVM的定义 MVVM是一种软件架构模式&#xff0c;它代表了模型 --视…

聊聊51单片机

目录 1.介绍 2.发展 3.应用领域 4.发展前景 1.介绍 51单片机&#xff08;AT89C51&#xff09;是一种常见的8位微控制器&#xff0c;属于Intel MCS-51系列。它是一种低功耗、高性能的单片机&#xff0c;广泛应用于嵌入式系统中。 51单片机具有很多特点和功能&#xff0c;例如…

26、springboot的自动配置03--核心功能--自定义条件注解及使用

开发自己的自动配置------开发自己的条件注解 ★ 自定义条件注解 好处有两个&#xff1a; 1. 真正掌握Spring boot条件注解的本质。 2. 项目遇到一些特殊的需求时&#xff0c;也可以开发自己的自定义条件注解来解决问题。自定义条件注解&#xff1a; ▲ 所有自定义注解其实都…

uni-app的Vue.js实现微信小程序的紧急事件登记页面功能

主要功能实现 完成发生时间选择功能&#xff0c;用户可以通过日期选择器选择事件发生的时间。实现事件类型选择功能&#xff0c;用户可以通过下拉选择框选择事件的类型。添加子养殖场编号输入框&#xff0c;用户可以输入与事件相关的子养殖场编号。完成事件描述输入功能&#…

【MySQL系列】--初识数据库

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

[管理与领导-29]:IT基层管理者 - 团队管理 - 马斯洛需求层次在家庭、情侣、朋友、人生、职场中应用

目录 前言&#xff1a; 一、马斯洛需求层次理论 二、马斯洛需求层次理论在家庭中的应用 三、斯洛需求层次在夫妻、情侣之间的应用 四、马斯洛需求层次理论在朋友间的应用 五、马斯洛需求层次理论在人生发展的应用 六、马斯洛需求层次理论在职场中的应用 前言&#xff1a…

消息中间件相关面试题

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…

Eclipse集成MapStruct

Eclipse集成MapStruct 在Eclipse中添加MapStruct依赖配置Eclipse支持MapStruct①安装 m2e-aptEclipse Marketplace的方式安装Install new software的方式安装&#xff08;JDK8用到&#xff09; ②添加到pom.xml 今天拿到同事其他项目的源码&#xff0c;导入并运行的时候抛出了异…

【二叉树前沿篇】树

【二叉树前沿篇】树 1 树的概念2. 树的相关概念3. 树的表示4. 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是…

论文笔记:Continuous Trajectory Generation Based on Two-Stage GAN

2023 AAAI 1 intro 1.1 背景 建模人类个体移动模式并生成接近真实的轨迹在许多应用中至关重要 1&#xff09;生成轨迹方法能够为城市规划、流行病传播分析和交通管控等城市假设分析场景提供仿仿真数据支撑2&#xff09;生成轨迹方法也是目前促进轨迹数据开源共享与解决轨迹数…

Java进阶-Oracle(二十一)(2)

&#x1f33b;&#x1f33b; 目录 一、Oracle 数据库的操作(DDL DML DQL DCL TPL)1.1 标识符、关键字、函数等1.1.1 数值类型&#xff1a;1.1.2 字符串类型&#xff1a;1.1.3 日期类型1.1.4 大的数据类型--适合保存更多的数据 1.2 运算符1.3 函数---预定义函数、自定义函数&…

LeetCode128.最长连续序列

我这个方法有点投机取巧了&#xff0c;题目说时间复杂度最多O(n),而我调用了Arrays.sort(&#xff09;方法&#xff0c;他的时间复杂度是n*log(n)&#xff0c;但是AC了&#xff0c;这样的话这道题还是非常简单的&#xff0c;创建一个Hashmap&#xff0c;以nums数组的元素作为ke…