如何为具有大量数据或记录的MySQL数据库正确设置DataImportHandler?

如何为具有大量数据或记录的MySQL数据库正确设置DataImportHandler?,mysql,solr,dataimporthandler,Mysql,Solr,Dataimporthandler,我已经按照手册中的说明设置了Solr的数据导入处理程序。Solr从MySQL数据库读取记录。数据库中有大量记录,预计为百万/十亿。 我已经读到,批处理大小不适用于MySQL,因为JDBC驱动程序不支持它。我已尝试将其设置为-1。在这种情况下,Solr执行一次选择,从数据库中获取所有记录并对它们进行索引 现在,我有一个问题,因为索引时发生超时,导致它停止。我看到Solr在异常发生后没有在属性文件中写入任何id值。我不知道如何继续索引其余的记录 有谁能建议我如何使用MySQL设置Solr以进行正确的

我已经按照手册中的说明设置了Solr的数据导入处理程序。Solr从MySQL数据库读取记录。数据库中有大量记录,预计为百万/十亿。 我已经读到,批处理大小不适用于MySQL,因为JDBC驱动程序不支持它。我已尝试将其设置为-1。在这种情况下,Solr执行一次选择,从数据库中获取所有记录并对它们进行索引

现在,我有一个问题,因为索引时发生超时,导致它停止。我看到Solr在异常发生后没有在属性文件中写入任何id值。我不知道如何继续索引其余的记录

有谁能建议我如何使用MySQL设置Solr以进行正确的数据导入

下面是我当前使用的数据配置

编辑:

根据我今天的测试,看起来batchSize正在工作。如果batchSize设置为-1,它将向MySQL发出一个请求,一次检索所有行。如果设置为大于0的某个值,它将在处理之前将每个记录放入内存中

下一个新问题是:如何设置数据导入处理程序,以便它可以成批索引?不仅要从数据库执行批选择,还要在收集下一个集合之前为收集的集合编制索引

编辑:指定问题 阅读中提出的新问题是:是否可以将数据库中的行标记为已处理?DIH中只有两个事件可用,即onImportStart和onImportEnd


当前的思想流引导我实现EntityProcessor。若可以知道某行何时被索引,那个么在数据库中为索引行标记ISINDEX标志也很容易。这是在我实现自定义EntityProcessor的情况下实现的。

所以您想要的是从第一个导入过程中断时开始的一份简历?是的,没错。我认为如果批量大小有效,这是可能的,但正如我在一些评论中看到的那样,它不适用于mysql jdbc。你确定批量大小不适用于mysql吗?您会收到什么错误消息?当然,无论批大小设置了什么,它都会导致jdbc在处理之前尝试加载内存中的所有记录,或者不工作。