Solr数据在所有服务器中被索引[分片模式]

Solr data beign indexed in all server[Sharding Mode]

我创建了三个 Solr 云实例,用于跨三个实例分片数据并从这三个实例进行查询。我使用以下命令创建了它们

命令:

solr.cmd start -c -s Node1 -p 8983
solr.cmd start -c -s Node2 -z localhost:9983 -p 8984
solr.cmd start -c -s Node3 -z localhost:9983 -p 8985

然后我创建了一个使用三个分片且复制因子为 1 的集合。

CMD1:

solr.cmd create_collection -c tests -shards 3 replicationFactor 1

然后我使用 post jar 使用以下命令将数据索引到集合中。

CMD2:

java -jar post.jar *.xml

该位置有 32 个 XML 个文件

据我了解,数据将在三个 Solr 云实例上进行拆分和索引。

但是发生的事情是在所有三个实例上索引了 32 个文档。

我使用以下网址确认了这一点

http://localhost:8984/solr/tests/select?indent=on&q=*:*&wt=json
http://localhost:8985/solr/tests/select?indent=on&q=*:*&wt=json
http://localhost:8983/solr/tests/select?indent=on&q=*:*&wt=json

一切都返回相同数量的记录。

我的理解是文档将在所有三个实例上进行拆分和索引。

因为我想将 30 亿个文档索引到 Solr 中并且有 2 billion hard limit in Solr。我想确保它们在三个 Solr 实例中被拆分和索引。

如果有任何错误,请告诉我。

版本。

Solr =6.1.0
Windows= 7

当您查询 /solr/tests 时,您查询的是 tests 集合。在幕后,Solr 正在从添加到该集合的所有分片中获取该集合中的所有文档并为您返回它们。

您偶然发现了 Solr 中集合背后的想法 - 无论您查询的是哪个服务器,Solr 都会向您返回 集合 的结果,包括所有添加到该集合的文档。您发出的三个请求的唯一区别是哪个服务器负责将结果返回给客户端并发出请求以从其他核心获取结果。

如果您想探索单个核心的内容,这些核心被命名为collectionname_shardX_replicaY。如果您从 Zookeeper 实例下载 json 文件,您可以检查当前集群状态 - 这将准确显示哪些分片位于何处。

您还可以在单​​个节点上使用 CoreAdmin API 检查该服务器上放置了哪些核心。请注意,当您 运行 处于云模式时,您不想通过 CoreAdmin API 执行任何可变操作。