您的位置:首页 > 数据库

(七) solr数据导入:通过JDBC从数据库导入数据

2012-10-29 12:11 573 查看
这节展示如何通过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域中(其实此处),其余字段以此类推
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: