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

时间:2016-12-20 08:40:21

标签: solr solrcloud

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

CMD:

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亿个文档编入索尔,并且2 billion hard limit in Solr。我想确保它们在三个Solr实例中被拆分并编入索引。

让我知道是否犯过任何错误。

版本。

Solr =6.1.0
Windows= 7

1 个答案:

答案 0 :(得分:1)

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

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

如果要浏览单个核心的内容,这些核心名为collectionname_shardX_replicaY。如果从Zookeeper实例下载json文件,则可以检查当前的集群状态 - 这将准确显示哪些分片位于哪里。

您还可以在单​​个节点上使用CoreAdmin API来检查已在该服务器上放置的核心。请注意,当您在云模式下运行时,不希望通过CoreAdmin API执行任何可变操作。