solr 的delta-import

2019-03-27 01:02|来源: 网路

纠正上篇关于默认主键的问题 solr的data-config中可以为每个entity 配置主键的。

solr提供了可配置的增量索引,在dataimport.properties中保存了上次索引的状态,solr文档说是开始时间,solr更具表格的last—modified 列来判断自从上次索引来,哪些行是改动过的。

详情见:http://wiki.apache.org/solr/DataImportHandler#head-70d3fdda52de9ee4fdb54e1c6f84199f0e1caa76

找到一篇翻译:

http://mxsfengg.blog.163.com/blog/static/26370218200810250524813/


转自:http://www.cnblogs.com/wycg1984/archive/2009/09/16/1567540

相关问答

更多
  • 如果我理解你的问题: 将文档插入Solr / Lucene时,它所看到的唯一内容是您在架构中设置为uniqueKey的字段。 如果您尝试向现有文档添加其他属性,Solr将删除现有文档(具有该唯一ID)并仅保留您在该文档中提供的上次插入索引的字段/属性。 Solr中有一个称为部分更新的功能,但它基本上读取当前字段值(因此必须stored所有字段),然后重新插入它们,就像您提供它们一样。 我认为这是你最好的选择。 看看这里了解更多信息。 If I understood your question correct ...
  • 如文档中所述 : 增量导入 用于增量导入和更改检测。 只有SqlEntityProcessor支持delta导入。 所以你需要: 移动到索引与一些Java代码(使用Solrj)和滚动你自己的增量输入下游 或者为FileListEntityProcessor实现所有delta变量(并希望将其推入Solr),那么可以使用SqlEntityProcessor代码作为指导。 As mentioned in the docs: delta-import For incremental imports and chan ...
  • 我已经使用了UpdateRequestHandler; 它非常适合我想做的事情。 [1] http://wiki.apache.org/solr/XsltUpdateRequestHandler I've resorted to using the UpdateRequestHandler; it's perfect for what I want to do. [1] http://wiki.apache.org/solr/XsltUpdateRequestHandler
  • 设置增量索引的常用方法(就像您一样)运行2个查询,而不是一个查询。 所以在某些情况下它可能不是最佳的。 我更喜欢像这样设置增量,所以有单个查询来维护,它更干净,增量运行在单个查询中。 你应该尝试一下,这可能会改善事情。 缺点是删除,你要么做一些软删除,或者你仍然需要通常的三角洲配置(我赞成第一)。 另外,当然,请确保last_modified列正确编制索引。 我不熟悉Cassandra jdbc驱动程序,你应该仔细检查。 最后一件事,如果您使用的是Datastax Entreprise Edition,则可 ...
  • 我注意到,在您的deltaImportQuery您引用了id (在您的deltaQuery中不存在)而不是group_id 。 在这一行中: ...and group_id=${dataimporter.delta.id}" 由于deltaQuery中的PK是group_id,查询的这一部分应该如下所示: ...and group_id=${dataimporter.delta.group_id}" 我有同样的问题,因为'我不明白${dataimporter.delta}实际上代表了deltaQuery ...
  • 在solr admin - > your core - > dataimport中,有一个Clean选项,如果选中则会在导入之前先清理数据(对于完全导入和delta-import)。 另一个提示是,solr DIH总是使用UTC作为导入时间戳,那么你的时区是多少? 首先将数据库中的datetime列转换为utc,然后再将其与dih.last_index_time进行比较。 In solr admin -> your core -> dataimport, there is a Clean option, i ...
  • 一种解决方案可能是在data-config.xml设置batchSize 。 以下是如何执行此操作的示例: 此示例取自以下链接: DataImportHandler - ...
  • 如果要处理确切的秒,则只需检查等于或大于上次修改时间的记录。 无论如何,如果记录已经存在(由唯一键标识),它将被覆盖。 Solr将默认更新记录,因此不会创建重复项。 If it is to handle the exact second, you just check for the records equal to or greater then the last modified time. Anyways if the the record already exists (identified by ...
  • 这就是我解决问题的方法。 我使用Camel-Http组件而不是Camel-Solr组件,并调用Solr数据导入处理程序来执行delta导入。 路线: from("quartz2://SolrUpdateHandlerTimer?trigger.repeatCount=-1&trigger.repeatInterval=300000") .to("direct:start"); from("direct:start") .setHeader(Exchange. ...
  • 你可以将<'$ {dataimporter.delta.id}'>替换为$ {dataimporter.delta.job_id}并进行测试。 deltaImportQuery :(仅用于delta-import)。有一个名称空间$ {dih.delta。 column-name }可以在此查询中使用。 例如:select * from tbl,其中id = $ {dih.delta.id} Solr1.4 如上所述,我们只能在delta命名空间中使用列名。 参考: https://wiki.apache. ...