搜鞥都哦 发表于 2016-12-16 07:47:46

DataImportHandler Solr数据导入DIH使用

DataImportHandler


Solr数据导入DIH使用


概述

 

目标

1、  读驻留在关系数据库中的数据
2、  根据多个表的列和数据建立solr文档
3、  根据这些文档更新solr
4、  提供根据配置做处理
5、  删除,修改,增加做增量导入
6、  定期的增量导入和全量导入
7、  通过配置文件读取xml,(http/ftp)建立索引
8、  提供插件使得其他任何数据源(FTP,SCP等)和其他格式的用户选择(JSON,CSV等)提供支持。
 

设计概要

Handler应该配置到solrconfig.xml中,如下面
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">/home/username/data-config.xml</str>
    </lst>
  </requestHandler>
 
故名思想,这个类实现了SolrRequestHandler(SolrRequestHandler使用.doc),配置在两个地方提供:
1、solrconfig.xml, 数据配置文件的位置添加在这里
2、数据源也可以添加在这里。或者配置在data-config.xml中
3、Data-config.xml
a)         如何获取数据(queries,url等)
b)         怎么读取( resultset columns,xml字段等)
c)         怎么执行(修改/添加/删除)
 

使用关系数据库管理系统

 
为了使用这个处理程序,下面的步骤是必需的。
1、定义一个data-config.xml文件,并且在solrconf.xml中DataImportHandler的节点下指定位置。
2、给连接信息,(如果你选择把数据源存储在solrconfig.xml中)
3、如果一切正常,HTTP打开dataimporthandler页面来验证 ,http://localhost:8983/solr/dataimport
4、使用全量导入,将会把数据库中所有数据添加到solr索引中。
5、使用增量导入,将会把数据库中(新增的或修改的)数据添加到solr索引中。
 

配置数据源

 
在dataConfig标签下添加一个dataSource标签。

<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="db_username" password="db_password"/>
1、  dataSource配置也可以被添加到solrconfig.xml 中
2、属性”type”指定实现类,它是可选的。默认值是“jdbcdatasource”
3、属性名称,可以在多个实体使用多个数据源的应用
4、自定义插件的实现【solr数据库导入数据自定义插件的实现.doc】
 


Oracle例子


 
首先,需要下载oracle 的jdbc驱动到你 solr安装目录的lib下面。

<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//hostname:port/SID" user="db_username" password="db_password"/>
 

多数据源

 
可以配置有多个数据源,配置一个额外的数据源,新添加一个dataSource配置即可,有一个隐含的属性“name”,数据源名称。如果有一个以上的,每一个额外的数据源必须确定一个唯一的名称的名称=“datasource-2”。
例如

<dataSource type="JdbcDataSource" name="ds-1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db1-host/dbname" user="db_username" password="db_password"/>
<dataSource type="JdbcDataSource" name="ds-2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db2-host/dbname" user="db_username" password="db_password"/>
 
在你的实体中

..
<entity name="one" dataSource="ds-1" ...>
   ..
</entity>
<entity name="two" dataSource="ds-2" ...>
   ..
</entity>
..
 


配置JdbcDataSource


JdbcDataSource 可使用的属性有:
·         driver (必须的): The jdbc driver classname
·         url (必须的) : The jdbc connection url (如果jndiName配置了,就不是必须的)
·         user : 用户名
·         password : 密码
·         jndiName : JNDI name of the preconfigured datasource
·         batchSize : The batchsize used in jdbc connection. Use a value of '-1' in case of setFetchSize()  exception.
·         convertType :(true/false)默认为“false”自动读取目标Solr数据类型的数据
·         autoCommit : If set to 'false' it sets setAutoCommit(false)  Solr1.4
·         readOnly : If this is set to 'true' , it sets setReadOnly(true), setAutoCommit(true),setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED),setHoldability(CLOSE_CURSORS_AT_COMMIT) on the connection 

·         <!---->transactionIsolation : The possible values are
任何额外的属性将标签直接传递到JDBC驱动程序。
 


配置data-config.xml文件


 
Solr的文档可以来自数据库的多个表,
Data-config.xml 开始于document 标签,一种文档代表了一个文档,文档包含一个或多个根实体。一根实体可以包含多个子实体,这反过来又可以包含其他实体。一个实体对应关系数据库中的表/视图。每个实体可以包含多个域。每个字段对应的结果集的列在实体查询返回的。每个领域,在结果集的提列名称。如果列名称不同Solr字段名称,另一个属性的名称应给予,所有的属性,比如type类型,都将从solr中schemal.xml中寻找。
 
为了从数据库中获取数据,我们的设计理念,围绕“模板化的SQL '为每个实体的用户。
 
参考网址
http://wiki.apache.org/solr/DataImportHandler
 
 
页: [1]
查看完整版本: DataImportHandler Solr数据导入DIH使用