学习Solr 5.3之 DIH导入数据快速入门
把你数据库中的数据所引到Solr中
第一步: 编辑你的 solrconfig.xml 在其中添加request handler
代码如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
第二步 : 创建一个 data-config.xml file 并把它保存在conf的目录下
这个示例用的是mysql,需要在solr web程序的lib目录下放mysql的连接驱动
同样的,Oracle要放oracle的驱动如ojdbc14.jar,具体驱动去官网下载
代码如下:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="id"
query="select id,name,desc from mytable">
</entity>
</document>
</dataConfig>
第三步 :确定你的solr schema (schema.xml) 是否包含以下字段 ‘id’, ‘name’, ‘desc’. 您可以 按data-config.xml中的name在schema.xml中添加field
第四步: 在solr-home/lib目录中删除jdbc的驱动jar包
第五步: 在浏览器中运行以下指令,这个命令式全部导入http://solr-host:port/solr/dataimport?command=full-import. 默认的会清空之前的索引,如果你需要不清空之前的索引需要添加以下参数clean=false. 例如: http://solr-host:port/solr/dataimport?command=full-import&clean=false
到这里为止,数据的导入已经初步完成了。
接下来,再做一下有趣的事情
索引的字段和数据库的字段名字不相同
第一步: 修改您的data-config.xml中的内容如下所示
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="id"
query="select id,name,desc from mytable">
<field column="id" name="solr_id"/>
<field column="name" name="solr_name"/>
<field column="desc" name="solr_desc"/>
</entity>
</document>
</dataConfig>
第二步:把这些修改的字段名字’solr_id’, ‘solr_name’, solr_desc’.必须把这些field添加到或修改 schema.xml
第三步 :在浏览器运行一下命令http://solr-host:port/dataimpor?command=full-import
OK,这样你的查询字段名字就跟数据库中的名字不一样了完美解决问题
接下来我们再来做一下更有趣的事情,之前导入表都是一张一张的导入,表之间是没有关联的,我们接下来,可以做一些关联,例如两张表之类的导入
把多张表的内容做成索引到solr中
话补多少,代码如下
第一步:修改data-config.xml文件代码如下
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/dbname"
user="user-name"
password="password"/>
<document>
<entity name="outer"
query="select id,name,desc from mytable">
<field column="id" name="solr_id"/>
<field column="name" name="solr_name"/>
<field column="desc" name="solr_desc"/>
<entity name="inner"
query="select details from another_table where id ='${outer.id}'">
<field column="details" name="solr_details"/>
</entity>
</entity>
</document>
</dataConfig>
第二步:修改对应的shecma.xml文件中对应的field
第三步:运行导入命令。
这样就大功告成,通过Solr自带的DIH工具把数据库中的数据导入到Solr中,这里只是入门,欢迎大家评论,有问题可以咨询QQ:1045438139