学习Solr 5.3之 DIH导入数据快速入门

学习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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值