我们计划建立一个 Solr 集群,该集群将拥有大约 30 台机器。我们有一个由 3 个节点组成的 Zookeeper 集合,将管理 Solr。 我们每隔几天就会有新的生产数据,这与 Prod 中的数据有很大不同。由于数据差异为 相当大,我们计划使用 hadoop 创建整个 Solr 索引转储并将这些二进制文件复制到每台机器,也许还可以进行一些核心交换。
我对 Solr 还很陌生,想知道这是否是一个好主意。我可以通过 http 将我的数据发布到 prod 集群,但每次更新都可能跨越多个文档。 我不确定这将如何影响写入时的读取流量。
有什么指点吗?
谢谢
我不确定我完全理解你的解释,但在我看来,你希望以零停机时间迁移到新的 solr 云环境。 首先,你需要知道你想要多少个分片,多少个副本等。 您需要部署 solr 节点,然后需要使用集合管理 API 根据需要创建集合(https://cwiki.apache.org/confluence/display/solr/Collections+API)。 完成所有这些之后,您应该准备好向新的 solr 环境添加内容。 您可以使用 Hadoop 来填充新的 solr 云,例如使用 solrj。或者您可以使用数据导入处理程序从另一个 solr(或关系数据库等)迁移数据。
如何在文档路由方面创建 solr 云非常重要,因为它控制着文档将存储在哪个分片中。 这就是为什么将原始索引数据复制到 solr 节点不是一个好主意,因为您可能会弄乱路由。 我发现这些关于路由的解释非常有用:https://lucidworks.com/blog/solr-cloud-document-routing/
但是,如果您使用别名并在另一个集合(或核心?!?)中重新索引,您如何跟上有效集合和有效别名的更新?