Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr DataImportHandler增量导入_Solr_Solrj - Fatal编程技术网

Solr DataImportHandler增量导入

Solr DataImportHandler增量导入,solr,solrj,Solr,Solrj,我正在使用DataImportHandler对SOLR中的数据进行索引。我使用完全导入来索引我的数据库中的所有数据,大约10000个产品。现在我对增量导入的用法感到困惑?它是否按时间间隔为添加到数据库中的新数据编制索引?我的意思是,它将为添加到表中的新数据编制大约10行的索引,或者它只是更新已编制索引的数据中的更改 有人能尽快用简单的例子给我解释一下吗。数据导入程序可能有点令人生畏。您的初始查询已加载10.000个独特的产品。如果指定/dataimport?命令=完全导入,则会加载该命令。 完成

我正在使用DataImportHandler对SOLR中的数据进行索引。我使用完全导入来索引我的数据库中的所有数据,大约10000个产品。现在我对增量导入的用法感到困惑?它是否按时间间隔为添加到数据库中的新数据编制索引?我的意思是,它将为添加到表中的新数据编制大约10行的索引,或者它只是更新已编制索引的数据中的更改


有人能尽快用简单的例子给我解释一下吗。

数据导入程序可能有点令人生畏。您的初始查询已加载10.000个独特的产品。如果指定/dataimport?命令=完全导入,则会加载该命令。 完成此导入后,DIH存储变量{dataimporter.last_index_time},这是上次执行此导入的日期/时间

为了进行更新,您需要指定一个deltaQuery。deltaQuery用于标识自上次更新以来数据库中已更改的记录。因此,您可以指定如下查询:SELECT product\u id 从某处 其中[date_update]>='${dataimporter.last_index_time}' 这将从数据库中检索自上次完全更新以来更新的所有产品ID。您需要指定的下一个查询deltaImportQuery是检索上一步中每个产品标识的完整记录的查询

假设product_id是您的唯一密钥,solr将发现它需要更新现有记录,或者在product_id不起作用时添加一条记录

为了执行deltaQuery和deltaImportQuery,您使用/dataimport?命令=delta导入


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

DataImportHandler可能有点让人望而生畏。您的初始查询已加载10.000个独特的产品。如果指定/dataimport?命令=完全导入,则会加载该命令。 完成此导入后,DIH存储变量{dataimporter.last_index_time},这是上次执行此导入的日期/时间

为了进行更新,您需要指定一个deltaQuery。deltaQuery用于标识自上次更新以来数据库中已更改的记录。因此,您可以指定如下查询:SELECT product\u id 从某处 其中[date_update]>='${dataimporter.last_index_time}' 这将从数据库中检索自上次完全更新以来更新的所有产品ID。您需要指定的下一个查询deltaImportQuery是检索上一步中每个产品标识的完整记录的查询

假设product_id是您的唯一密钥,solr将发现它需要更新现有记录,或者在product_id不起作用时添加一条记录

为了执行deltaQuery和deltaImportQuery,您使用/dataimport?命令=delta导入


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

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

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

另一个注意事项:

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

否则,您将不会根据时差更新索引或过多索引。

另一个注意事项:

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


否则,您将不会根据时差更新索引或过多索引。

数据库中是否存储了[date\u update]时间戳?如果是这样,当数据库服务器的日期与安装SOLR的服务器的日期不完全同步时,这是否会产生问题?date_update确实是一个数据库时间戳。实际情况是,这个确切的日期存储在solr服务器上,并用于后续调用。同步没有问题,d
database时间戳驱动进程。好的,但是必须将“${dataimporter.last_index_time}”设置为数据库时间戳否?然而,据我的理解,是SOLR本身在索引完成时设置了“${dataimporter.last_index_time}”变量。有没有办法手动设置“${dataimporter.last_index_time}”以反映数据库时间?实际数据包含在solr/config目录中的文件中。这是一个名为dataimport.properties的文本文件是的,事实上我知道该文件本身,但是这个时间戳不是由SOLR本身执行的吗?即当SOLR完成导入时,SOLR获取其服务器的当前时间戳并将其放在该文件中否?[date_update]是存储在数据库中的时间戳吗?如果是这样,当数据库服务器的日期与安装SOLR的服务器的日期不完全同步时,这是否会产生问题?date_update确实是一个数据库时间戳。实际情况是,这个确切的日期存储在solr服务器上,并用于后续调用。同步没有问题,数据库时间戳驱动进程。可以,但是必须将“${dataimporter.last_index_time}”设置为数据库时间戳否?然而,据我的理解,是SOLR本身在索引完成时设置了“${dataimporter.last_index_time}”变量。有没有办法手动设置“${dataimporter.last_index_time}”以反映数据库时间?实际数据包含在solr/config目录中的文件中。它是一个名为dataimport.properties的文本文件是的,事实上我知道该文件本身,但是这个时间戳不是由SOLR本身执行的吗?即当SOLR完成导入时,SOLR获取其服务器的当前时间戳并将其放入该文件中否?