首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr DataImportHandler增量导入

Solr DataImportHandler增量导入
EN

Stack Overflow用户
提问于 2011-01-07 06:42:01
回答 3查看 4.5K关注 0票数 1

我使用DataImportHandler对SOLR中的数据进行索引。我使用完全导入来索引我的数据库中的所有数据,大约有10000 products.Now。我对增量导入的用法感到困惑?它是在间隔的基础上索引添加到数据库中的新数据吗?我的意思是,它将索引添加到我的表中的大约10行的新数据,或者它只是更新已经索引的数据中的更改。

有没有人可以尽快用简单的例子给我解释。

EN

回答 3

Stack Overflow用户

发布于 2011-01-20 05:48:33

DataImportHandler可能有点令人生畏。您的初始查询已加载了10.000个唯一的产品。如果您指定/dataimport?command=full-import,则会加载此文件。完成此导入后,DIH将存储一个变量({dataimporter.last_index_time}),该变量是您上次执行此导入的日期/时间。

为了进行更新,您需要指定一个deltaQuery。deltaQuery用于标识自上次更新以来数据库中发生更改的记录。因此,您可以指定如下查询: SELECT product_id FROM sometable WHERE date_update >= '${dataimporter.last_index_time}‘This将从数据库中检索自上次完全更新以来更新的所有product_ids。您需要指定的下一个查询(deltaImportQuery)是检索上一步中每个product_id的完整记录的查询。

假设solr是您的唯一键,product_id将计算出它需要更新现有记录,或者如果product_id不起作用,则添加一条记录。

为了执行deltaQuery和deltaImportQuery,您可以使用/dataimport?命令=增量导入

这是对所有可能性的极大简化,请查看DataImportHandler上的Solr wiki,它是一个非常强大的工具!

票数 4
EN

Stack Overflow用户

发布于 2012-09-07 23:12:32

另一点是:

当您在较小的时间窗口(例如几秒钟内几次)内使用增量导入,并且数据库服务器位于solr index服务之外的另一台计算机上时,请确保两台计算机的systemtime匹配,因为[date_update]的时间戳是在数据库服务器上生成的,而dataimporter.last_index_time是在另一台服务器上生成的。

否则,您将不会更新索引(或更新太多),这取决于时间差。

票数 3
EN

Stack Overflow用户

发布于 2012-07-27 01:30:13

我同意数据导入处理程序可以处理这种情况。DIH的一个重要限制是它不对请求进行排队。这样做的结果是,如果DIH正在“忙”索引,它将忽略所有未来的DIH请求,直到它再次“空闲”。跳过的DIH请求将丢失且不会执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4620774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档