【问题标题】:How to Search Multiple SOLR Core?如何搜索多个 SOLR 内核?
【发布时间】:2016-09-12 12:19:18
【问题描述】:

在单个 Solr 实例中,存在多个核心。不涉及分片、复制和云概念。现在如何在这种情况下搜索多个核心?

【问题讨论】:

    标签: solr multicore


    【解决方案1】:

    要跨核心搜索,您必须使用分片。如果两个核心的架构相同,您可以只查询一个核心并提供 shards 参数。

    如果架构不同,请创建一个单独的核心,其中包含两个目标架构的合并架构,然后使用两个单独的核心作为分片查询该核心。在 core0 中拥有 FieldA、FieldB 和在 core1 中的 FieldB、FieldC 将需要一个定义了 FieldA、FieldB、FieldC 的模式,然后是一个指向 core0 和 core1 的分片参数。

    这种方法的主要问题是,如果文档非常不同,它们之间的评分可能有点奇怪,因为比较 core0 中的内容和 core1 中的内容可能会很奇怪。

    分片还假设文档是均匀分布的(因为分数是在每个核心上本地计算的)。

    【讨论】:

    • 只想确认一件事:假设我已经安装了 solr 并创建了一个简单的核心(例如核心 1),然后将数据提供给核心 1,然后创建了另一个核心(例如核心 2)然后将数据馈送到核心 2。它非常简单意味着不涉及分片和复制以及 solr 云概念。现在根据你搜索 core1 和 core2 是不可能的。对吗?(我理解你的最后一行,这里的 diff core 表示 diff 类型的数据,它没有意义,但仍然重新确认它)。
    • 如果它们具有 相同 模式,则可以通过说它们是不同的分片来搜索两者(因为手动分片只是告诉 Solr “它们都属于同一个集合文件,请从两者中获取信息”——这不是您必须在旧的手动配置中启用或设置的东西)。如果它们具有不同的架构,则创建一个超级架构,然后将其他两个节点都请求为分片可以达到相同的效果。
    • 我理解但不完全。 “创建一个超级模式” - 你能不能把这件事简单一点。假设我有一个分片,并且架构具有字段 A 和字段 B,而另一个分片具有包含字段 B 和字段 C 的架构。所以在这种情况下,您是说我们需要创建一个包含字段 A 和字段的超级架构B 和字段 C。如果有错误,请纠正我。但是现在我没有得到您所说的“要求两个其他节点,因为分片实现相同”?请根据我所说的上述示例帮助我理解这一点。
    • 是的,没错。您需要有一个定义 FieldA、FieldB 和 FieldC 的通用架构,以及一个指定其他核心(FieldA、FieldB-core 和 FieldB、FieldC 核心)的 shards 参数。我将编辑我的答案以使其更清晰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多