首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有智能客户端的SolrCloud索引/查询

没有智能客户端的SolrCloud索引/查询
EN

Stack Overflow用户
提问于 2015-06-02 18:50:11
回答 1查看 856关注 0票数 3

如果我没有可用的智能客户端,我很难准确理解索引和查询是如何工作的。我使用的是SolrNet和C#,目前还没有与ZooKeeper集成。

作为一个基本示例,假设我有一个集合,分成两个碎片,在两个不同的节点/服务器上复制,并且在服务器前面有一个标准的HTTP负载均衡器(一个提到的here场景)。如果我使用标准的compositeId路由器,我相信索引可以在没有问题的情况下工作,并且在幕后由ZooKeeper复制到两个节点。我不需要担心哪个节点收到了"update“命令-- ZooKeeper将自动处理文档路由和复制。

但是,在同样的场景中,ZooKeeper是否能够正确地处理幕后的查询路由?考虑到我使用的是内置切分而不是自定义切分,对负载均衡器的查询请求会被路由到正确的碎片,还是必须在“碎片”参数中包含所有已知的碎片(请参阅here)以确保不遗漏任何内容?显然,随着碎片数量的增加,这将是很难维持的。

似乎自定义切分将提供最大的效率跨索引和查询,尽管这样您就风险巨大的不平等的碎片大小。如对这些事项有任何想法,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 08:06:57

让我们以两个碎片集合为例,每个碎片位于一个单独的节点/服务器上。

10.x.x.100:8983/solr/ -> shard 1/节点1

10.x.x.101:8983/solr/ ->碎片2/节点2

使用默认路由,您将100个文档编入索引,这些文档被分成这两个服务器,现在每个服务器都有50个文档。

如果您查询这两个服务器中的任何一个以获取文档,solr将在默认情况下在这两个碎片中搜索。您不需要在shards参数中指定任何内容。

所以

10.x.x.100:8983/solr/collection/select?q=solr rocks

也将在10.x.x.101:8983/solr/上运行相同的查询,返回的结果将是来自两个碎片的结果的组合,并按分数进行排序和排序。

当您知道数据的“组”在哪个碎片中时,就会显示&shards参数。例如,使用上面的示例,您已启用自定义路由,并使用字段"city“路由文档。例如,让我们假设"city“字段只能有两个值。您的文档将根据此字段路由到其中一个碎片。

在应用程序端,如果希望专门查询属于城市的文档,可以指定&shard参数,查询的所有结果将仅来自该碎片。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30604221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档