Solr从数据库导入数据(DIH)
一. 数据导入(DataImportHandler-DIH)
DIH 是solr 提供的一种针对数据库、xml/HTTP、富文本对象导入到solr 索引库的工具包。这里只针对数据库做介绍。
A、准备以下jar包
apache-solr-dataimporthandler-4.0.0.jar
apache-solr-dataimporthandler-extras-4.0.0.jar
apache-solr-dataimportscheduler-1.1.jar(增量导入使用)
数据库对应的jdbc驱动包这里使用的是Oracle oracle10g.ja放入Tomcat6.0.36/webapps/sol/WEB-INF/lib 中
B、配置solrconfig.xml
在solrconfig.xml中加入如下配置:
<requestHandlername=”/dataimport” class=”org.apache.solr.handler.dataimport.DataImportHandler”>
<lst name=”defaults”>
<str name=”config”>xx-data-config.xml</str>
</lst>
</requestHandler>
C、配置数据源
在与solrconfig.xml文件同级的目录中建立上述配置中的xx-data-config.xml文件,配置如下

query属性为全导入的时候使用。其他为增量导入使用。
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<dataConfig>
<dataSource type=”JdbcDataSource”
driver=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@192.168.0.129:1521:orcl”
user=”username”
password=”password”/>
<document>
<entity name=”business_info” pk=”ID”
query=”select t.ID id,business_name,bussiness_type from business t”
deltaImportQuery=”select t.ID id,business_name,bussiness_type from business t where id=’${dataimporter.delta.ID}'”
deltaQuery=”select t.ID id,business_name,bussiness_type from business t where to_char(updatetime,’yyyy-mm-dd hh24:mi:ss’)> ‘${dataimporter.last_index_time}'”>
<field column=”ID” name=”id”/>
</entity>
</document>
</dataConfig>
至此所有DIH的配置完成,在浏览器中输入命令:
全导入:
http://localhost:8085/solr/core0/dataimport?command=full-import&commit=ture
增量导入:
http://localhost:8085/solr/core0/dataimport?command=delta-import&clean=false&commit=ture
查看导入状态
http://localhost:8085/solr/core0/dataimport?command=status
D、处理CLOB字段
<entity name=”meta” query=”select id,filename,content,bytes from documents” transformer=”ClobTransformer”>
<field column=”ID” name=”id” />
<field column=”CONTENT” name=”CONTENT” clob=”true” />
</entity>
ClOB 字段的 column 必须大写!!
E、DIH内存溢出错误
在使用DIH时,容易报内存溢出错误。可以通过设置jvm大小来解决。设置方法如下:
在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m -Xmx1024m 配置 这里设置的是1024M,根据情况可以适量增大
F、自动全导入和自动增量导入
此功能可以自己写程序实现,也可利用apache-solr-dataimportscheduler-1.0.jar包完成此功能。配置如下:
修改solr.war中WEB-INF/web.xml, 在servlet节点前面增加:
<listener>
<listener-class>
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
</listener-class>
</listener>
将apache-solr-dataimportscheduler-.jar 中 dataimport.properties 取出并根据实际情况修改,然后放到 solr.home/conf (不是solr.home/core/conf) 目录下面
具体配置可参考:http://code.google.com/p/solr-dataimport-scheduler/
Solr从数据库导入数据(DIH)的更多相关文章
- 【转】Solr从数据库导入数据(DIH)
本文转自:http://blog.csdn.net/xiaoyu714543065/article/details/11849115 一. 数据导入(DataImportHandler-DIH) DI ...
- Sqlserver 2005 跨数据库 导入数据
--Sqlserver 2005 跨数据库 导入数据:--SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/O ...
- solr8.0 从数据库导入数据(三)
第一步:导入相关包: 在创建的核心目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包,以及一个mysql驱动包. 第二 ...
- MYSQL数据库导入数据时出现乱码的解决办法
我的一个网站在负载搞不定的情况下最终选择了数据库和程序分离的方式解决的高负载,但是再导入数据的时候出现了大量乱码,最终通过方法二解决掉导入数据的问题,后面再设计网站布局的时候数据库跟网站程序分离是个很 ...
- 记录一次向TiDB数据库导入数据的例子
导出数据 今天从Mysql的某个库中导出一个表大概有20分钟吧,等了一会终于导出成功了.查看一下文件的大小: [tidb@:vg_adn_CkhsTest ~]$du -h ./creative_ou ...
- 在C#应用程序中,利用表值参数过滤重复,批量向数据库导入数据,并且返回重复数据
在很多情况下,应用程序都需要实现excel数据导入功能,数据如果只有几十条,或上百条,甚至上千条,速度还好. 但是不仅如此,如果客户提供给你的excel本身存在着重复数据,或是excel中的某些数据已 ...
- Tidb数据库导入数据出现oom问题
今天使用insert操作向tidb中插入数据,发现正在导入的过程中出现如下错误: mysql: [Warning] Using a password on the command line inter ...
- Solr——从postgresql数据库导入数据
1,配置准备 本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始 2,修改soreconfig.xml 在soreconfig.xm ...
- Loading Data into a Table;MySQL从本地向数据库导入数据
在localhost中准备好了一个test数据库和一个pet表: mysql> SHOW DATABASES; +--------------------+ | Database | +---- ...
随机推荐
- win7x64 串口程序无法运行,提示:component 'MSCOMM32.OCX' or one of its dependencies not correctlu registered。。。
VB写的串口工具在win7 x64机器运行时遇到的问题, component 'MSCOMM32.OCX' or one of its dependencies not correctlu regis ...
- linux gsensor驱动分析【转】
本文转载自:http://blog.sina.com.cn/s/blog_89f592f501013sr2.html 本文以Bma250驱动为例子,详细介绍Gsensor设计的一个模板. gsenso ...
- qcom Android Camera【转】
本文转载自:http://blog.csdn.net/Wilsonboliu/article/details/54949196 1.总体架构 Android Camera 框架从整体上看是一个 cli ...
- kill的各种讯号?
kill 程序 不仅仅只是k掉某个进程, 她还有很多作用和用途. 其实, 这也是linux的程序的一个特点: 一个程序(很多是 命令行的程序), 除了主要的作用外, 还有很多" 重要的, 有 ...
- ceph-pve英语
adapted accordingly并相应地调整 silosn. 筒仓:粮仓:贮仓(silo的复数) saturatevt. 浸透,使湿透:使饱和,使充满While one HDD might no ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_2_Arraylist集合
数组查询快,增删慢. 不是同步的就是多线程的 ArrayList其实就是一个数组 这是add方法 它在添加元素的时候会创建新的数组,然后把元素复制过来.这就是为什么查询快,增删们的原因. 每次增加元素 ...
- 40 insert语句的锁
40 insert语句的锁 上一篇文章中对mysql自增主键锁做了优化,尽量在申请到自增id后,就释放自增锁. 因此,insert语句是一个很轻量的操作,不过,这个结论对于”普通的insert”才生效 ...
- java RMI 远程调用
1.背景 在学习代理模式的过程中接触到了远程调用,jdk有自己的RMI实现,所以这边自己实现了RMI远程调用,并记录下心得. 感受最深的是RMI和现在的微服务有点相似,都是通过"注册中心&q ...
- 004/HyperLedger-Fabric(节点与channel关系)
HyperLedger:超级账本项目 一.Fabric中的节点 1.节点术语 [1].Orderers: 提供共识服务的网络节点,例如,使用Kafka或PBFT [2].Peers: 维护账本 ...
- python+selenium元素定位之CSS学习01
参考文档:https://www.w3school.com.cn/cssref/css_selectors.asp 选择器 例子 例子描述 CSS .class .intro 选择 class=&qu ...