gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:52:33 27 4
gpt4 key购买 nike

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

作为一个基本示例,假设我有一个集合,分成两个分片,在两个单独的节点/服务器之间进行复制,并且我在服务器前面有一个标准的 HTTP 负载平衡器(提到的场景 here ).如果我使用标准的 compositeId 路由器,我相信索引将毫无问题地工作,并由 ZooKeeper 在幕后复制到两个节点。我不需要担心哪个节点接收到“更新”命令——ZooKeeper 会自动处理文档路由和复制。

但是,在同样的情况下,ZooKeeper 会在幕后正确处理查询路由吗?鉴于我使用的是内置分片而不是自定义分片,对负载均衡器的查询请求是否会被路由到正确的分片,或者我是否必须在“shards"参数(参见 here )以确保我不会遗漏任何内容?显然,随着分片数量的增加,维护起来会很麻烦。

似乎自定义分片会在索引和查询之间提供最大的效率,尽管这样你就冒着分片大小不均的风险。对这些问题的任何想法将不胜感激。

最佳答案

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

10.x.x.100:8983/solr/--> 分片 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 参数就会出现。例如,使用上面的示例,您启用了自定义路由,并使用字段“城市”来路由文档。例如,假设“城市”字段只能有两个值。您的文档将根据此字段路由到其中一个分片。

在你的应用端,如果你想专门查询属于某个城市的文档,你可以指定&shard参数,查询的所有结果都只会来自那个shard。

关于没有智能客户端的 SolrCloud 索引/查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com