DIH(Data Import Handler)是Solr附带的用来从关系型数据库、XML、email等目标导入数据的工具,本文仅说明Solr5.3.1中使用DIH从关系型数据库中导入数据的方式。
一、 配置Solr
1. 安装JDK1.7以上版本,此处略。
2. 安装应用服务器,如tomcat7以上版本,此处略。
3. 部署Solr Web应用:
a) 解压官方下载包solr-5.3.1.zip
b) 将solr-5.3.1\server\solr-webapp\webapp下所有内容拷贝到服务器WEB应用目录
c) 将solr-5.3.1\server\lib\ext目录下的Jar包全复制到WEB-INF\lib
d) 将solr-5.3.1\server\resources\log4j.properties复制到WEB-INF\lib
e) 创建一个用于存放Solr数据的目录(任意可访问位置),例如/srv/www/app/solr_home;
f) 将solr-5.3.1\server\solr\中的内容复制到上一步创建的目录
修改WEB-INF/web.xml
取消env-entry标签的注释,并修改子标签env-entry-value的值
本例中中改成/srv/www/app/solr_home
注意:该处不能填错,填错后不能正常启动
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/srv/www/app/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
g) 在/srv/www/app/solr_home创建一个目录,例如core,并将solr-5.3.1\server\solr\configsets\basic_configs下的conf文件夹放入core中
h) 启动服务器,并在浏览器中访问,出现solr管理界面
i)
创建Core,步骤如下:
j) Solr在Tomcat部署完成
二、 配置schema.xml
Solr索引的内容是以Document为单位的,由于我们使用Solr索引数据库中表的数据,一个Document相当于一条记录,而这条记录所拥有的字段由schema.xml配置。
Schema.xml的配置比较简单,在模版的基础上修改即可。本文前面配置的Solr的Schema.xml文件位于solr_home/core/conf中。
我们使用Field标签来定义Document的字段。模版中的Field一条Field配置如下:
<field name="id"type="string" indexed="true" stored="true"required="true" multiValued="false" />
属性解释分别如下:
Type:字段类型,引用的类型必须在Schema.xml中配置,模版中已经配置了常用的type。直接使用即可
Indexed:该字段是否索引
Stored:该字段是否在solr中存储
Required:该字段是否必须,即是否能为空
multivalued:该字段是否能为多值(关联表一对多)。
模版中配置了很多dynamicField,该字段的的名称支持模糊匹配。由于我们从数据库中导入数据,不需要该类标签。
三、 配置DIH
a. 将solr-5.3.1\dist\solr-dataimporthandler-5.3.1.jar和数据库驱动拷贝到WEB-INF/lib中
b. 将solr-5.3.1\example\example-DIH\solr\db\conf\db-data-config.xml拷贝到solr_home/core/conf中
c. 在solrconfig.xml中注册声明DIH,如下:
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
c. <lst name="defa