[jjzhu学java]之solr4.9同步mysql数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。        可以将数据库中的数据导入到solr中,对于百万级别的数据可以快速响应查询。 1、安装jdk JDK版本需要1.7以上


Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

       可以将数据库中的数据导入到solr中,对于百万级别的数据可以快速响应查询。

1、安装jdk

JDK版本需要1.7以上

2、安装solr

下载solr压缩包,解压安装包,进入到SOLR_HOME\example目录下,运行命令java –jar start.jar启动solr



Solr默认端口为8983,访问http://localhost:8983/solr,若有如下界面,则启动成功


3、导入并更新数据相关配置

       Solr提供了将数据库数据导入到solr索引库的功能(dataimport)

3.1、下载数据库驱动包

       下载mysql的驱动包,并放在{%SOLR_HOME%}contrib\dataimporthandler\lib目录下


3.2、配置solrconfig.xml

3.2.1、引用相关库

       solrconfig.xml包含了用于配置自身行为的绝大部分参数,其作用范围是当前core。位置在文件目录该文件位于{%solr_home%} example\solr\collection1\conf下。

       数据导入需要引用mysql的驱动包和DataImport所需的包。

       在文件中添加如下内容:

<libdir="../../../contrib/dataimporthandler/lib"regex=".*\.jar" />

       <lib dir="../../../dist/"regex="solr-dataimporthandler-\d.*\.jar" />

      

3.2.2、配置requestHandler

       在solrconfig.xml中加入如下配置:

<requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">

       <lst name="defaults">

         <str name="config">data-config.xml</str>

       </lst>

   </requestHandler>


3.3、配置schema.xml

              Schema.xml可以灵活的配置不同类型的字段,所在位置与solrconfig.xml同级。

              导入数据需要配置与数据库中字段一致的类型,在配置文件中


3.3、配置数据源

       在与solrconfig.xml同级目录下({%solr_home%}example\solr\collection1\con),建立与3.2.2中配置中同名的数据配置文件data-config.xml,


并添加如下内容

<dataConfig>

   <!-- driver: 数据库驱动名

        url:数据库路径

        user:数据库用户

        password:数据库密码

        batchSize:防止在导入数据过程中内存溢出

    -->

  <dataSource type="JdbcDataSource"

             driver="com.mysql.jdbc.Driver"

             url="jdbc:mysql://localhost/exercise"

              user="root"

              password=""

              batchSize="-1"/>

 

  <document>

   <!--要导入的表,可以配置多个

       并查询出要建立索引的字段

   -->

   <entity name="customerinfo" query="selectcustomerID,customerName,PID,telephone from customerinfo">

      <field column="customerID" name="id"/>

      <field column="customerID" name="customerID"/>

      <field column="customerName"name="customerName"/>

      <field column="PID" name="PID"/>

      <field column="telephone" name="telephone"/>

   </entity>

 </document>

</dataConfig>

4、导入数据

       访问solr界面



Command选择full-import,Entity选择要导入的表,再点击Execute便可导入数据


完成后会提示索引建立完成。

然后在Query界面可以输入相关查询条件进行查询


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
26天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
1天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
40 26
|
27天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
131 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
5天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
27天前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
58 14
|
1月前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
54 9
|
26天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
47 2
|
26天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
27 2
|
1月前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
48 2
|
20天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####