javaAPI调用solrcloud上传配置和删除/创建集合。网上大多都是通过http路径调用创建,以下是通过Zookeeper+solr进行操作:
?
public class SolrConfig {
static String ZK_HOST="10.8.177.204:2181,10.8.177.210:2181,10.8.177.33:2181,10.8.177.22:2181";
static SolrZkClient zkClient=new SolrZkClient(ZK_HOST,30000);
static ZkConfigManager zkConfigManager=new ZkConfigManager(zkClient);
/**
* 上传配置
* @param configName
* @param configPath
* @throws IOException
*/
public static void uploadConfig(String configName,String configPath)throws IOException{
System.out.println("准备上传配置:"+configName);
zkConfigManager.uploadConfigDir(Paths.get(configPath),configName);
System.out.println("上传配置成功!");
}
/**
* 删除集合
* @param deleteName
* @throws IOException
* @throws SolrServerException
*/
public static void deleteCollection(String deleteName)throws IOException,SolrServerException{
SolrClient solrClient=new CloudSolrClient(ZK_HOST);
CollectionAdminRequest.Delete delete=new CollectionAdminRequest.Delete();
delete.setCollectionName(deleteName);
CollectionAdminResponse response=delete.process(solrClient);
System.out.println(response);
solrClient.close();
}
/**
* 创建集合
* @param collectionName
* @param configName
* @throws IOException
* @throws SolrServerException
*/
public static void createCollection(String collectionName,String configName)throws IOException,SolrServerException{
SolrClient solrClient=new CloudSolrClient(ZK_HOST);
CollectionAdminRequest.Create create=new CollectionAdminRequest.Create();
create.setConfigName(configName);
create.setCollectionName(collectionName);
create.setNumShards(4);//分片
create.setMaxShardsPerNode(4);//每个节点最多持有片
create.setReplicationFactor(2);//复制
CollectionAdminResponse response=create.process(solrClient);
System.out.println(response);
solrClient.close();
}
public static void main(String[] args){
try {
String collectionName="shb1026";
String config="solrAndHbase";
// String configPath = "G:\\config\\solr_conf\\nlp\\";
// uploadConfig(config, configPath);
// deleteCollection(collectionName);
createCollection(collectionName,config);
}catch (Exception e){
e.printStackTrace();
}
}
}
?
?
原文:http://290434409.iteye.com/blog/2252008