(七) solr数据导入:通过JDBC从数据库导入数据
这节展示如何通过JDBC从mysql数据库中将数据导入进solr中
假设数据库(blog)中有如下两个表:article,category
article:
id,title,catid
category:
id,catname
接着需要做一下几个配置:
在 schema.xml的域信息定义如下:
<field name="id" type="string" indexed="true" stored="true" required="true"/> <field name="title" type="text" indexed="true" stored="true"/> <field name="catname" type="string" stored="true"/>
solrconfig.xml
<requestHandler name="/import" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">db-data-config.xml</str> </lst> </requestHandler>
db-data-config.xml 的配置如下:
<dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/blog" user="root" password="admin"/> <document> <entity name="article" query="select id,title,catid from article"> <field column="id" name="id" /> <field column="title" name="title" /> <field column="title" name="suggest"/> <entity name="category" query="select catname from category where id=${article.catid}"> <field column="catname" name="catname"/> </entity> </entity> </document> </dataConfig>
配置完成之后,重启solr服务,然后执行以下命令进行数据导入
http://localhost:8983/solr/import?command=full-import
/import: 这个命令用于显示当前的状态
/import?command=full-import :使用该参数,表示进行完全导入,默认情况下,在开始导入的时候,会将上次导入的数据进先进行删除,然后再导入,通过另外一个参数,可以改变这种默认行为,clean=false
/dataimport?command=delta-import:使用该参数,表示进行增量导入
/dataimport?command=reload-config: 该命令表示强制对配置进行重新加载
/dataimport?command=abort :该命令表示停止当前正在进行的索引
下面就一些参数稍作解释:
<field column="title" name="title" /> 此处是将从mysql数据库中获取的字段名“title” 映射到schema.xml中的title域中(其实此处),其余字段以此类推