我将更改模式中的一些字段类型,因此似乎必须使用这种更改重新索引当前Solr索引数据中的所有文档。
问题是如何对所有文档进行“重新索引”?我能想到的一种解决方案是通过搜索接口“查询”所有文档,将一个大文件转储为XML或JSON格式,然后将其转换为Solr的输入XML格式,并再次将其加载回Solr,以实现模式更改。
有没有更好的方法可以更有效地做到这一点?谢谢你的建议。
发布于 2011-05-30 12:56:53
首先,如果您具有已索引但未存储的字段,则转储查询结果可能不会给出原始数据。通常,最好保留一份SOLR输入的副本,以便在需要时可以轻松地从头开始重新构建索引。在这种情况下,只需通过just <delete><query>*:*</query></delete>
、<commit/>
和<optimize/>
来运行delete查询。在此之后,索引为空,您可以添加使用新模式的新文档。
但是,在使用新的模式文件重新启动SOLR之后,只需运行<optimize/>
就可以了。最好有一个备份,您可以在其中测试它是否适用于您的配置。
有一个名为Luke的工具,可用于浏览和导出Lucene索引。我自己从来没有尝试过,但它可能能够帮助您导出数据,以便您可以重新导入数据。
发布于 2011-07-29 10:42:32
转储查询的所有结果的想法可能会给出不完整或无效的数据,因为您可能不会显示索引中的所有数据。
虽然以可以重新插入的形式保留索引副本的想法在数据不变的情况下会很好地工作,但当您向模式中添加新字段时,情况就会变得更加复杂。在这种情况下,您需要从源收集所有数据,格式化数据以匹配新模式,然后插入它。
发布于 2013-03-14 02:17:45
如果Solr中的文档数量很大,并且您需要保持Solr服务器可用于查询,则可以启动索引作业,以便在后台重新添加/重新索引文档。
引入一个新的字段来保存每个文档的最新索引时间戳是很有帮助的,因此在任何索引/重新索引问题的情况下,可以识别正在等待重新索引文档。
要改善查询的延迟,可以在每次提交后使用配置参数来保留缓存。
https://stackoverflow.com/questions/6168747
复制相似问题