欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:965
  2. 浏览总数:11,691,333
  3. 评论:3897
  4. 分类目录:103 个
  5. 注册用户数:5960
  6. 最后更新:2018年11月10日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
大数据猿:
bigdata_ai

将 MySQL 的增量数据导入到 Apache Solr 中

这篇这篇 文章中我分别介绍了如何将 MySQL 的全量数据导入到 Apache Solr 中以及如何分页导入等,本篇文章将继续介绍如何将 MySQL 的增量数据导入到 Solr 中。

增量导数接口为 deltaimport,对应的页面如下:

将 MySQL 的增量数据导入到 Apache Solr 中
如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

如果我们使用 《将 MySQL 的全量数据以分页的形式导入到 Apache Solr 中》的配置,然后在 Command 下拉框里面我们选择 delta-import 选项,最后点击页面上的 Execute 按钮,执行将不会报任何的错误,但是执行的结果是 Requests: 0 , Fetched: 0 , Skipped: 0 , Processed: 0 。这个结果的原因是我们并没有定义 delta-import 的处理逻辑,所以无法处理增量数据。

增量导数需要在之前的设置上进行如下设置:

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/iteblog" user="root" password="xxxxx" />
        <document>
        <entity name="iteblog" query="select id,post_title,post_author from wp_posts order by id limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"
		deltaQuery="select id from wp_posts where post_date > '${dataimporter.last_index_time}'"
		deltaImportQuery="SELECT id,post_title,post_author from wp_posts where id='${dataimporter.delta.id}'">
             <field column="id" name="id" />
             <field column="post_title" name="post_title" />
             <field column="post_author" name="post_author" />
         </entity>
    </document>
</dataConfig>

增加内容见上面高亮的6和7行配置。这里对新增的配置进行一些说明:

  • 在执行 full-import 的时候,Solr 会在 Core/Collection 的配置目录下生成一个名为 dataimport.properties 的文件,其内容如下:
    #Sat Aug 18 22:34:28 GMT+08:00 2018
    last_index_time=2018-08-18 22\:34\:27
    iteblog.last_index_time=2018-08-18 22\:34\:27
    

    主要用于存储本 Core/Collection 上一次更新的时间

  • 上面配置中的 deltaQuery 主要用于查询出 wp_posts 表距离上次更新之后新增文章的 id,在本文的示例中就是找到 wp_posts 表在 2018-08-18 22:34:27 时间之后新增的文章 id。
  • deltaImportQuery 属性用于查询更新文章的相关信息。dataimporter.delta.id 可以拿到 deltaQuery 配置获取的文章 id。
  • 如果你 Solr 的 solr.in.sh 文件里面没有配置 SOLR_TIMEZONE="UTC+8",那 dataimport.properties 文件里面记录的时间比实际时间少八小时。也就是说,我们现在时间为22:48,如果你这时候更新了索引信息,那么 dataimport.properties 里面记录的时间为 14:48,整整少了八小时,那这时候你根据这个时间去查增量的文章可能会有问题。

设置完上面的配置之后,我们再一次点击 Execute 按钮,这时候 Solr 就能够从 MySQL 里面的 wp_posts 表找到文章 post_date 大于 2018-08-18 22:34:27 的所有文章,然后进行索引。

事实上,点击 Execute 按钮相当于执行下面 URL 请求:

http://iteblog.com:8983/solr/mysql2solr/dataimport?core=mysql2solr&indent=on&commit=true&name=dataimport&clean=false&wt=json&command=delta-import
将 MySQL 的增量数据导入到 Apache Solr 中
如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

我们可以通过编写一个定时任务,每天执行上面 URL 请求,获取每天的增量数据,然后进行索引,具体实现比较简单,我就不再赘述。

另外,关于 DataImportHandler 的更多详细使用可以参见 这里。delta 高级使用可以参见这里

本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【将 MySQL 的增量数据导入到 Apache Solr 中】(https://www.iteblog.com/archives/2407.html)
喜欢 (2)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!