SOLR 3.6.0,在对一组实体进行完整的重新索引之后,我的一些项目没有进入SOLR索引,但是没有生成任何日志

SOLR 3.6.0,在对一组实体进行完整的重新索引之后,我的一些项目没有进入SOLR索引,但是没有生成任何日志,solr,document,Solr,Document,使用StreamingUpdateSolrServer,我使用以下算法将庞大的数据集重新索引到SOLR中 Initialize StreamingUpdateSolrServer server = new StreamingUpdateSolrServer(solrServerUrl, numDocsToAddInBatch, numOfThreads); For each Item… -->Create document -->Server.add(document) When

使用StreamingUpdateSolrServer,我使用以下算法将庞大的数据集重新索引到SOLR中

Initialize StreamingUpdateSolrServer server = new StreamingUpdateSolrServer(solrServerUrl, numDocsToAddInBatch, numOfThreads);

For each Item…
-->Create document
-->Server.add(document)

When all finished,

server.commit();
server.optimize();
问题是:

我的一些项目没有进入SOLR索引,但是没有生成日志来告诉我发生了什么

我找到了大部分文件,但有些文件不见了。在任何日志中都没有错误——并且我在客户端站点上的所有SOLRJ异常周围都有大量的try/catch块

验证SOLR WAR未隐藏日志记录 您肯定希望验证SOLR服务器日志设置没有隐藏文档无法添加到索引的事实

由于SOLR使用SLF4J API,因此SOLR服务器可能会超越日志设置,使您能够在文档索引失败时看到错误消息

如果您有一个自定义的{solr war}/WEB-INF/classes/logging.properties,则需要确保设置不会隐藏错误消息

默认情况下,添加项目时的错误应自动显示。因此,如果您在任何时候都没有更改SOLR日志设置。。。在索引服务器日志文件时,您应该会看到任何错误

疑难解答文档无法索引的原因 为了对此进行调查,在索引完成后的任何时候都可以遵循验证步骤:

Initialize new log log_fromsolr
Initialize new log log_notfound

    For each Item…
    -->Search SOLR for the item. If SOLR has the object, log each item’s fields into log_fromsolr on a single line into log_fromsolr. This should include the unqiueKey for your document if you have one. 
    -->If document cannot be found in SOLR for this item, write a line to log_notfound with all the fields from the object from the database, also supplying the uniqueKey as the first line.
验证步骤完成后,log\u notfound会创建一个列表,列出所有未能添加到索引中的文档

您可以使用log_fromsolr创建的日志来比较索引中的项目和未索引的项目的文档字段

确认它不是间歇性故障 有时,可能会出现这样的情况:每次尝试索引时,都有不同的项未能添加到索引中

如果在log_notfound log中找到对象,则需要备份当前notfound log并从头开始重新运行索引过程。使用diff工具查看第一个notfound日志和第二个notfound日志之间的差异

当您看到这些文件中存在大量差异时,间歇性问题很明显(注意:如果在第一次和第二次重新索引之间在数据库中创建新对象,则可能会出现一些差异)

如果您的问题是间歇性的,那么它肯定指向与您的SOLR事务相关的应用程序代码没有正确提交

每次索引时都会丢失相同的文档 此时,我们必须比较从SOLR索引中找到的文档与未进入Lucene索引的文档。通常,在将文档添加到索引时,对象的逐字段比较将开始改变一些可能导致问题的可疑值

尝试删除所有可疑字段,然后重新索引整个内容。查看文档是否仍无法编制索引。如果这样做有效,您将希望开始重新引入已删除的字段,并查看是否可以确定问题所在