`
forchenyun
  • 浏览: 312281 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用Solr Data Import的delta-import功能

    博客分类:
  • Solr
阅读更多

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标签的参数:

l  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

相关参数如下:

n  entity

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

n  clean

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

n  commit

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

n  optimize

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

n  debug

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

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

3
2
分享到:
评论
5 楼 illu 2011-01-12  
flysnowxf 写道
添加和修改的数据可以做到,我想请问一下,删除的数据如何通过alter-import来删除?

用这个 deletedPkQuery
例如配置
<entity pk="id"
        deletedPkQuery ="select id from tableA where status='D'"
...

前提就是你的删除不是物理删除 只是改变状态
如果是物理删除就比较麻烦了 需要自己写存储过程让deletedPkQuery 调用
4 楼 forchenyun 2010-11-17  
flysnowxf 写道
forchenyun 写道
flysnowxf 写道
添加和修改的数据可以做到,我想请问一下,删除的数据如何通过alter-import来删除?

solr的delta import非常不完善,我看document的时候官方都不是很推荐,我们一般都是全量做import,而将增量的通过接收消息的方式更新索引

我明白你意思了,这样做只是和业务比较耦合。

完全的脱离业务还是有些困难的,呵呵
如果你想做实时,通过消息更新,基本是唯一的选择
3 楼 flysnowxf 2010-11-17  
forchenyun 写道
flysnowxf 写道
添加和修改的数据可以做到,我想请问一下,删除的数据如何通过alter-import来删除?

solr的delta import非常不完善,我看document的时候官方都不是很推荐,我们一般都是全量做import,而将增量的通过接收消息的方式更新索引

我明白你意思了,这样做只是和业务比较耦合。
2 楼 forchenyun 2010-11-17  
flysnowxf 写道
添加和修改的数据可以做到,我想请问一下,删除的数据如何通过alter-import来删除?

solr的delta import非常不完善,我看document的时候官方都不是很推荐,我们一般都是全量做import,而将增量的通过接收消息的方式更新索引
1 楼 flysnowxf 2010-11-17  
添加和修改的数据可以做到,我想请问一下,删除的数据如何通过alter-import来删除?

相关推荐

    solr-dataimporthandler的jar包

    4. **增量导入与 delta-import**: 如果数据源有更新,可以使用 Delta Import 功能只导入自上次导入以来发生变化的数据,提高效率。 5. **监控与调试**: 使用 Solr 的日志和错误信息进行问题排查,确保数据导入过程...

    最新版windows solr-8.6.0.zip

    - **Full Import和Delta Import**:全量导入和增量导入,确保索引与数据源同步。 5. **搜索和查询** - **查询语法**:支持Lucene标准查询语法,如布尔逻辑、通配符、模糊匹配等。 - **高亮显示**:Solr可以对...

    solr6.0+mysql集成配置

    deltaImportQuery="SELECT * FROM my_table WHERE id = '${dataimport.delta.id}'"&gt; &lt;!-- 映射字段 --&gt; &lt;!-- 其他字段映射... --&gt; ``` 这里,`last_modified` 是 MySQL 表中的一个字段,用于记录每次更新的...

    dataimportscheduler-1.3.jar

    * FROM my_table WHERE id &gt; ${dataimport.last_index_time}" deltaImportQuery="SELECT * FROM my_table WHERE id = '${dataimport.delta.id}'" deltaQuery="SELECT id FROM my_table WHERE last_modified &gt; '${...

    图解Solr5.3.1与MySQL配置【原创】

    1. **配置requestHandler**:使用`org.apache.solr.handler.dataimport.DataImportHandler`作为DIH。 2. **引入data-config.xml**:指定之前创建的`data-config.xml`文件,以便DIH能够根据该配置文件中的规则从MySQL...

    solr连接数据库配置

    Solr 是一个流行的开源全文搜索引擎,它允许开发者通过配置来实现高效的搜索功能。在Solr中,连接数据库是一项重要的配置,这使得我们可以将数据库中的数据导入到Solr中,以便进行快速检索。这篇博客“solr连接...

    solr6 增量导入demo

    3. 启用DeltaImport:在Solr的请求处理器中启用DeltaImport,以便能够通过HTTP请求触发增量导入。 四、定时任务与全量导入 1. 定时导入:可以通过集成外部定时任务工具(如Cron或Quartz)来定期触发Solr的增量导入...

    solr.md Solr是一个高性能,采用Java开发

    &lt;requestHandler name="/dataimport"&gt; &lt;str name="config"&gt;data-config.xml ``` 这段配置是为了启用Solr的数据导入处理功能,指定`data-config.xml`作为数据导入的配置文件。 - **创建Data-config.xml**...

    solr5.3.1 导入mysql数据

    4. **增量导入和 delta-import**: 如果数据源有实时更新,可以使用增量导入功能只导入自上次导入以来发生变化的记录,提高效率。 在实际应用中,我们还需要关注性能优化、安全性、集群部署等方面。例如,可以通过...

    Solr3.6用DIH组件进行MySQL数据库全文索引[归纳].pdf

    command=full-import`,增量导入使用`/dataimport?command=delta-import`。 5. **监控和优化**:观察数据导入的日志,确保没有错误发生。如果需要,可以调整索引策略,如分词器设置、分析器选择、缓存大小等,以...

    跟益达学Solr5之从MySQL数据库导入数据并索引

    这可以通过在`data-config.xml`中配置`&lt;delta-import&gt;`查询来实现。 总之,通过学习这个教程,你将掌握如何使用Solr 5与MySQL数据库集成,从而实现数据的高效搜索。这不仅提升了用户体验,还减轻了后端服务器的压力...

    solr运行配置与数据库数据导入到solr

    &lt;requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"&gt; &lt;str name="config"&gt;D:/solr-tomcat/solr/db/conf/db-data-config.xml ``` 7. **更新schema.xml**:...

Global site tag (gtag.js) - Google Analytics