• 使用Solr Data Import的deltaimport功能


    使用Solr Data Import的delta-import功能

    Solr提供了full-importdelta-import两种导入方式,这篇文章主要讲解后者。

    所谓delta-import主要是对于数据库(也可能是文件等等)中增加或者被修改的字段进行导入。主要原理是利用率每次我们进行import的时候在solr.home\conf下面生成的dataimport.properties文件,此文件里面有最近一次导入的相关信息。这个文件如下:

    1. #Wed Apr 21 16:48:27 CST 2010

    2. last_index_time=2010-04-21 16\:48\:24

    3. id.last_index_time=2010-04-21 16\:48\:24

    其实last_index_time是最近一次索引(full-import或者delta-import)的时间。

    通过比较这个时间和我们数据库表中的timestamp列即可得出哪些是之后修改或者添加的。

    可通过http://<host>:<port>/solr/dataimport查看

    下面是操作步骤:

    1.       配置好请求处理器。(这个见我的上一篇文章)

    2.       修改data-config.xml如下:

    4. <dataConfig> 

    5.   <dataSource type="JdbcDataSource" 

    6.               driver="com.mysql.jdbc.Driver" 

    7.               url="jdbc:mysql://localhost:3306/workshop" 

    8.               user="root" 

    9.               password="123"

    10.               batchSize="100"

    11.               autoCommit="false" /> 

    12.   <document> 

    13.     <entity name="id" 

    14.             query="SELECT id,`user`,title,content,`timestamp`,`text` FROM article"

    15.             deltaImportQuery="SELECT id,`user`,title,content,`timestamp`,`text` FROM article where id='${dataimporter.delta.id}'"

    16.                 deltaQuery="select id from article where `timestamp` > '${dataimporter.last_index_time}'"> 

    17.     </entity> 

    18.   </document> 

    19. </dataConfig>  

    注意entity标签的参数:

    deltaImportQuery

    仅适用于delta-import的参数。DIH会检查数据库中的最后修改时间是否与我们

    这个示例为了尽可能简单,没有使用多表。数据库对应表结构如下:

    id    Integer       increment

    user  varchar(45)

    title varchar(45)

    content varchar(2000)

    timestamp datatime

    text    varchar(2000)

    3.       最后我们请求:

    http://<host>:<port>/solr/dataimport?command=delta-import 即可完成delta import

    相关参数如下:

    entity

    entitydocument下面的标签(data-config.xml)。使用这个参数可以有选择的执行一个或多个entity   。使用多个entity参数可以使得多个entity同时运行。如果不选择此参数那么所有的都会被运行。

    clean

    选择是否要在索引开始构建之前删除之前的索引,默认为true

    commit

    选择是否在索引完成之后提交。默认为true

    optimize

    是否在索引完成之后对索引进行优化。默认为true

    debug

    是否以调试模式运行,适用于交互式开发(interactive development mode)之中。

    请注意,如果以调试模式运行,那么默认不会自动提交,请加参数“commit=true

  • 相关阅读:
    mybatis批量更新报错
    Axure8破解码
    小程序开发-Step1
    2018新年计划
    java 写 Excel(不生成实体文件,写为流的形式)
    git 生成公钥 使用命令行无需输入用户名密码(windows)
    Node.js:上传文件,服务端如何获取文件上传进度
    Express:模板引擎深入研究
    windows下nginx的安装及使用
    Chrome开发者工具详解-Network面板
  • 原文地址:https://www.cnblogs.com/wycg1984/p/1722379.html
Copyright © 2020-2023  润新知