首页 文章

SolrCloud上的自定义分片或自动分片?

提问于
浏览
2

我想为超过一千万条新闻文章 Build 一个SolrCloud clsuter . 看完这篇文章后:Shards and Indexing Data in SolrCloud,我的计划如下:

  • 添加前缀ED2001!记录ID,其中ED表示某些报纸来源,2001年是新闻文章发布日期的年份部分,即我想将特定年份发布的特定新闻纸源的所有新闻文章放入碎片 .

  • 使用router.name设置为compositeID创建集合 .

  • 添加文件?

  • 查询集合?

实际上,我有一些问题:

  • 如何根据此计划添加doucments?更新集合/核心时是否必须指定特殊参数?

  • 这叫"custom sharding"?如果没有,"custom sharding"是什么?

  • 自动分片是否适合我的情况,因为当分片太大时,自动分片会有分片分割功能?

  • 我可以在没有_router_参数的情况下查询吗?

编辑@ 2015/9/2:

  • 这就是我认为SolrCloud会做的事情:"The amount of news articles of specific newspaper source of specific year tends to be around a fix number, e.g. Every year ED has around 80,000 articles, so each shard's size won't increase dramatically. For the next year's news articles of ED, I only have to add prefix 'ED2016!' to document ID, SolrCloud will create a new shard for me (which contains all ED2016 articles), and later the Leader will spread the replica of this new shard to other nodes (per replica per node other than leader?)" . 我对吗?如果是的话,似乎不需要分裂碎片 .

2 回答

  • 5

    Answer-1: 如果具有文档的模式(结构),则可以在 schema.xml 配置中提供相同的结构,或者可以使用Solr的 schema-less 模式为文档编制索引 . schema-less 模式将自动识别文档中的字段并对其进行索引 . schema-less 模式的配置与solr中基于模式的配置模式略有不同 . 之后,您需要使用curl或solrj java api将文档发送到solr以进行索引 . 从本质上讲,solr为所有不同的操作提供了休息终点 . 您可以使用任何更适合您的语言编写客户端 .

    Answer-2: 您在计划中提到的,使用 compositeId ,被称为 custom sharding . 因为您决定特定文档应该去哪个分片 .

    Answer-3: 如果不确定您目前和将来需要索引多少数据,我建议使用自动分片功能 . 随着索引大小的增加,您可以分割碎片并水平缩放solr .

    Answer-4: 我浏览了solr文档,没有找到任何提及 _route_ 作为强制参数的地方 . 但在某些情况下,这可能会提高查询性能,因为它可以在查询所有分片时克服网络延迟 .

    Answer-5: 自动分片的含义是根据创建分片时分配的哈希范围将文档路由到分片 . 它不会自动创建新的分片,只需为 compositeId 指定新的前缀即可 . 因此,一旦索引的大小变得足够大,您可能需要将其拆分 . 点击此处查看more .

  • 3

    这实际上是回答我自己的问题的指南:

    我有点理解一些概念:

    • "custom sharding" IS NOT "custom hashing" .

    • Solr平均将散列值拆分为默认散列行为 .

    • compositeId路由器应用"custom hashing"因为它通过为shard_key / num-of-bits添加前缀来更改默认散列行为 .

    • 隐式路由器适用"custom sharding",因为我们需要手动指定我们的文档将被发送到哪些分片 .

    • compositeId路由器仍然是自动分片,因为它是Solr,它看到shard_key前缀并将文档路由到特定分片 .

    • compositeId路由器需要指定numShards参数(可能是因为Solr需要为每个分片分配各种散列值空间范围) .

    显然我的策略不起作用,因为我需要总是在Solr中添加新年的新闻文章,而且我无法预先预测多少分片 . 可以这么说,Implicit路由器对我来说似乎是一个可能的选择(我们创建需要的分片并将文档添加到我们打算使用的分片中) .

相关问题