我试图在SolrCloud上创建一个Solr集合,我想以一定的顺序传入我希望该集合存在的主机,并让Solr遵循该顺序。Solr在API中使用参数createNodeSet.shuffle公开了此功能,但我无法在SolrAdminRequest.Create示例中显式设置此参数。Solrj中没有这个功能吗?我可以用setProperties()方法设置值吗?即使它是一个“param”?
createNodeSet.shuffle
SolrAdminRequest.Create
4ktjp1zp1#
我也面临着这个问题,我注意到你已经在GitHub上打开了一个PR。我尝试了几种方法来实现这个目标,但最后我给予了,在将它们传递给Create请求之前,我自己对节点进行了洗牌。在Kotlin中:
Create
Kotlin
val nodes = listOf("node1", "node2") val createNodeSet = nodes.shuffled().joinToString(",")
在Java中:
Java
List<String> nodes = Arrays.asList("node1", "node2"); Collections.shuffle(nodes); String createNodeSet = String.join(",", nodes);
u2nhd7ah2#
由于current Solr现在将构造函数标记为protected,只能通过静态构建器访问,而且我不想担心有一个新的类,所以我想出了以下方法来设置所需的参数。这个方法应该可以在许多其他构建器创建的op对象上使用。
Create req = CollectionAdminRequest // .createCollection(newCollection, newConfigSet, NUM_SHARDS, NUM_REPLICAS); final SolrParams reqParams = req.getParams(); if (reqParams instanceof ModifiableSolrParams) { ((ModifiableSolrParams) reqParams).set("createNodeSet.shuffle", "false"); }
2条答案
按热度按时间4ktjp1zp1#
我也面临着这个问题,我注意到你已经在GitHub上打开了一个PR。我尝试了几种方法来实现这个目标,但最后我给予了,在将它们传递给
Create
请求之前,我自己对节点进行了洗牌。在
Kotlin
中:在
Java
中:u2nhd7ah2#
由于current Solr现在将构造函数标记为protected,只能通过静态构建器访问,而且我不想担心有一个新的类,所以我想出了以下方法来设置所需的参数。
这个方法应该可以在许多其他构建器创建的op对象上使用。