【问题标题】:SolrCloud and updates that require index rebuild and/or modify codeSolrCloud 和需要索引重建和/或修改代码的更新
【发布时间】:2013-12-20 03:07:05
【问题描述】:

由于 ZooKeeper 集成,SolrCloud 为managingreloading 核心/集合配置提供了一些不错的实用程序。

但是,这仅完全涵盖了琐碎更新的情况 - 但也有 非琐碎 更新。 非平凡在这种情况下意味着导致某些更改使更新的节点和/或其核心与某些先前状态不兼容

特别是,我想到了这些子案例:

  1. 代码更新需要重启底层 Solr 实例。
  2. 需要完全重建核心的架构更改。

我的问题是:如何使用 SolrCloud 和相关的 Zookeeper 服务来使此类更新更容易、更可靠和/或确保更高的可用性?

注意:我希望某些 API/功能能够“理解”此类更新。到目前为止,我发现的最值得注意的事情是 CoreAdmin 中的集合别名,这将允许在“旧”和“新”版本之间进行更平滑的转换——鉴于上述希望,这有点令人失望。

【问题讨论】:

    标签: solr apache-zookeeper solr4 solrcloud


    【解决方案1】:

    我不知道你的意思是什么

    A code update necessitating a restart of an underlying Solr instance.
    

    您的意思是 Solr 代码已更改? (例如,较新的版本)或者访问 Solr 实例的应用程序发生了变化? (例如在您的代码库中)

    在第一种情况下,只是提出一个新实例,并将其添加到 ZooKeeper,即使版本不同,也应该是它的结束。

    在第二种情况下,访问数据的应用程序发生了什么并不重要,对吧?

    然后你提到我认为最“常见”的场景

    需要完全重建核心的架构更改。

    如果您正在更改架构,这意味着您正在更改某些索引、字段和/或元数据,您不能真的期望 Solr 不知道此更改并继续运行并返回结果,因为它们的哈希不再对应相同的结构。

    我认为这里最好的方法是尝试识别更改的深度,然后将更新的结构重新加载到新索引中,然后对您的应用程序进行所需的代码更改,以便查询这些新结构,或者如果允许停机时间窗口,则只需删除并重建整个事物(尽管这种攻击您的“确保更高可用性”的要求)

    我认为这与在 SQL 中对数据库表的热更新相同,并且有两个版本的应用程序同时使用旧结构和新结构,它可以非常小心地完成,你会如果可以的话,最好把它们分开……

    不确定这是否有帮助,干杯,

    迈克。

    【讨论】:

    • 重新代码更新: 1. 我的意思是更改 Solr 实例中的自定义服务特定代码,但版本更新是一个有效的子案例。 2.“应该”?你知道这是一个事实,还是你的猜想? 重建案例:感谢您愿意提供帮助,但您确实意识到我在最后一段中已经在我的问题中包含了“手动”解决方案?这个问题不是关于这些问题的一般解决方案,而是SolrCloud/Zookeeper 是否有额外的设施来帮助解决这些问题,如果有,如何解决。对不起,但就目前而言,我有否决您的答案。
    • 很抱歉听到我没有帮助......仍然认为它不需要投票,因为除非有人找到一种特定的方式来做你问的事情,否则它可能会有用:(你的问题, 就目前而言, 要求 Solr/ZK “理解” 对核心索引的重要更新, 这恐怕它做不到。关于在同一个 ZK 上运行的新版本 Solr, 是的, 我知道这是一个事实。除非您愿意编写一些代码来防止这种情况发生(添加一个codeVersion字段并查询那个或类似的东西),否则您的“手动”解决方案是一样好的)
    • 不,它没有呼吁投反对票,因为这不是惩罚或压制;作为提问者,我相信我确实有权就答案是否有用(特别是因为当时有持续的赏金)提出一些意见;)。最后,如果您的答案来自事实,请对其进行编辑以解释/引用它们。
    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多