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

Sco*_*Chu 2 routing solr sharding solrcloud

我想为超过一千万条新闻文章建立一个SolrCloud clsuter.阅读本文后:SolrCloud中的碎片和索引数据,我的计划如下:

  1. 添加前缀ED2001!记录ID,其中ED表示某些报纸来源,2001年是新闻文章发布日期的年份部分,即我想将特定年份发布的特定新闻纸源的所有新闻文章放入碎片.
  2. 使用router.name设置为compositeID创建集合.
  3. 添加文件?
  4. 查询集合?

实际上,我有一些问题:

  1. 如何根据此计划添加doucments?更新集合/核心时是否必须指定特殊参数?
  2. 这被称为"自定义分片"吗?如果没有,什么是"自定义分片"?
  3. 对于我的情况,自动分片是一个更好的选择,因为当分片太大时,自动分片有一个分片分割功能吗?
  4. 我可以在没有_router_参数的情况下查询吗?

编辑@ 2015/9/2:

  1. 这就是我认为SolrCloud会做的事情:"特定年份特定报纸来源的新闻文章数量往往在一个固定数字附近,例如,每年ED有大约80,000篇文章,因此每个碎片的大小不会大幅增加.在明年ED的新闻文章中,我只需添加前缀'ED2016!' 为了记录ID,SolrCloud将为我创建一个新的分片(其中包含所有ED2016文章),之后领导者会将这个新分片的副本传播到其他节点(每个节点除了领导者以外每个副本?)".我对吗?如果是的话,似乎不需要分裂碎片.

You*_*bit 5

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

答案2:您在计划中提到的,使用的compositeId,称为自定义分片.因为您决定特定文档应该去哪个分片.

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

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

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