SOLR 3.6.0,在对一组实体进行完整的重新索引之后,我的一些项目没有进入SOLR索引,但是没有生成任何日志
使用StreamingUpdateSolrServer,我使用以下算法将庞大的数据集重新索引到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
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索引的文档。通常,在将文档添加到索引时,对象的逐字段比较将开始改变一些可能导致问题的可疑值
尝试删除所有可疑字段,然后重新索引整个内容。查看文档是否仍无法编制索引。如果这样做有效,您将希望开始重新引入已删除的字段,并查看是否可以确定问题所在