【问题标题】:how to use single core for each collection in solr cloud?如何为 solr cloud 中的每个集合使用单核?
【发布时间】:2019-04-02 09:44:02
【问题描述】:

在 solr cloud 中是否有任何方法可以保留一个集合的数据,以便仅触发对该集合的所有索引和搜索查询。我在 solr join 查询中遇到问题。 假设我有一个文件,

{
        "form_object_id":"a5ec120cd61e41a2a8f05b01edbb8a89",
        "app_id":2400,
        "id":"formobj_a5ec120cd61e41a2a8f05b01edbb8a89_account_1704",
        "account_id":1704,
        "location_gps_value":"[]",
        "title":"Mumbai",
        "formobject_created_at":"2019-03-31T09:28:40Z",
        "formobject_id":"a5ec120cd61e41a2a8f05b01edbb8a89",
        "Region_2_name":["Maharashtra"],
        "Region_2":["a478ce4bcd7c441c8534849631bebaf8"],
}


In this document i have one field "Region_2" which contains one id "a478ce4bcd7c441c8534849631bebaf8" & this id is present in 208 other solr documents like,

{
        "form_id":26825,
        "form_object_id":"a478ce4bcd7c441c8534849631bebaf8",
        "title":"Maharashtra",
        "location.lat":0.0,
        "location.long":0.0,
        "created_date":"2019-03-31T09:27:55Z",
        "form_name":"Region",
        "type":"assetformobject",
        "id":"formobj_a478ce4bcd7c441c8534849631bebaf8_account_1704",
}

这里的form_object_id与之前文档中的“Region_2”字段相同。 当我加入时,

{!join+from=Region_2+to=form_object_id}title:Mumbai

这个查询应该返回 208 个文档,但它只返回 51 个,但是当我在单核中启动 solr 时,相同的查询返回所有 208 个结果。 我认为这可能是因为 solr 将文档分布在多个分片上。 有没有办法在 solr cloud 中做到这一点?

【问题讨论】:

  • 据我所知,文件必须存在于同一台服务器上才能成功加入。您可以使用Document Routing 确保相关文档最终位于相同的分片上。看看有没有帮助。

标签: solr solrcloud


【解决方案1】:

是的,这在 solr cloud 中是可能的。 如果两个文档不在同一个分片中,则无法加入。 为了加入工作,您必须将每个链接的文档保存在同一个分片中,在您的情况下,如果这两个文件都保存在同一个分片中,那么加入将按我们的预期工作。

解决方案 1:

为您的“id”字段添加一些常用值前缀,后跟 "!"(感叹号)。从上面的例子看起来“account_1704”是上面文档之间的共同点。

如果可能,创建类似“account_1704!_formobj_a5ec120cd61e41a2a8f05b01edbb8a89”和“account_1704!_formobj_a478ce4bcd7c441c8534849631bebaf8”的id 这样,这 2 个文档将始终位于同一个分片中(原因:Solr 将在 ! 之前考虑字符串创建哈希,并且为两个文档创建的 has 将相同,因此两个文档将在同一个分片中路由)

如果无法进行“id”操作,则选择解决方案 2

解决方案 2:

在创建集合时,将 router.name 设置为 "implicit"(默认为compositeId)并将router.field 设置为“form_object_id”(如它在文档之间很常见)。 然后这些文档将存储在同一个分片中,并且加入将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多