从Solr组件代码中获取Zookeeper URL和Solr集合名称

4

我正在编写一个自定义的Solr组件,它使用 CloudSolrServer 实例在分布式索引上执行辅助查询。我通常会从 solrconfig.xml 配置中获取 Zookeeper url 和 collection 名称:

String zookeeper = params.get(ZOOKEEPER_URL);
String collection = params.get(COLLECTION_NAME);

我想从我的solrconfig.xml文件中删除Zookeeper url条目和集合名称条目。是否可以从其他地方获取这些值?我正在执行辅助查询,该查询与我的组件运行的集合相同。如何在组件代码中获取集合名称及其Zookeeper url?

1个回答

4
动物园管理员的URL和收藏名称可以通过使用传递给每个组件方法的rbResponseBuilder)参数来获取:
CoreDescriptor coreDescriptor = rb.req.getCore().getCoreDescriptor();

String collectionName = coreDescriptor.getCloudDescriptor().getCollectionName();

ZkController zkController = coreDescriptor.getCoreContainer().getZkController();

String zookeeperUrl = zkController.getZkServerAddress();

假设自定义组件类扩展了 SearchComponentrb 参数将传递给组件的每个公共方法:prepareprocessdistributedProcessmodifyRequesthandleResponsesfinishStage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接