温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

solrcloud和solr在集群中建立索方法是什么

发布时间:2021-12-22 11:36:11 来源:亿速云 阅读:472 作者:iii 栏目:云计算

本篇内容介绍了“solrcloud和solr在集群中建立索方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1 通过通过zookeeper通道建立索引

public static void main(String[] args) throws IOException, SolrServerException {         //注意,zkHost在windows伪分布式与hadoop分布式设置不一样         //windows伪分布式zkHost最后不需要加"/solr",linux的hadoop中需要添加"/solr"	String zkHost = "node1:2181,node2:2181,node3:2181/solr";	String defaultCollection = "collection1";	CloudSolrServer server = new CloudSolrServer(zkHost);	server.setDefaultCollection(defaultCollection); 	for (int i = 0; i < 1000; ++i) {	SolrInputDocument doc = new SolrInputDocument();	doc.addField("cat", "book");	doc.addField("id", "book-" + i);	doc.addField("name", "The Legend of Po part " + i);	server.add(doc);	if (i % 100 == 0)	server.commit(); // periodically flush	}	server.commit();	}

2  注意,CDH中,可以看zookeeper的设置,最大链接数为60,所以对于zookeeper一般用单例

public class myCloudSolrServer {     // solrServer     public static CloudSolrServer solrServer;          //效率不高的方法 //    public static synchronized CloudSolrServer getSolrServer() { //        if (solrServer == null) { //            try { //                solrServer = new CloudSolrServer(Const.ZK_HOST + "/solr"); //                final int zkClientTimeout = 20000; // 心跳20秒 //                final int zkConnectTimeout = 10000; // 设置链接主机超时(单位毫秒) // //                solrServer.setDefaultCollection(Const.defaultCollection); //                solrServer.setZkClientTimeout(zkClientTimeout); //                solrServer.setZkConnectTimeout(zkConnectTimeout); //            } catch (Exception e) { //                e.printStackTrace(); //            } //        } //        return solrServer; //    }     //支持大并发方法     public static CloudSolrServer getSolrServer() {         if (solrServer == null) {             synchronized (myCloudSolrServer.class) {                 if (solrServer == null) {                     try {                         solrServer = new CloudSolrServer(Const.ZK_HOST + "/solr");                         final int zkClientTimeout = 20000; // 心跳20秒                         final int zkConnectTimeout = 10000; // 设置链接主机超时(单位毫秒)                         solrServer.setDefaultCollection(Const.defaultCollection);                         solrServer.setZkClientTimeout(zkClientTimeout);                         solrServer.setZkConnectTimeout(zkConnectTimeout);                     } catch (Exception e) {                         e.printStackTrace();                     }                 }             }         }         return solrServer;     } }

3  急群中可以指定到某个分片

public static void main(String[] args) throws IOException, SolrServerException {	String url= "node1:8983/solr/core_shard1_replica1";	String defaultCollection = "collection1";	HttpSolrServer server = new HttpSolrServer (url);	server.setDefaultCollection(defaultCollection); 	for (int i = 0; i < 1000; ++i) {	SolrInputDocument doc = new SolrInputDocument();	doc.addField("cat", "book");	doc.addField("id", "book-" + i);	doc.addField("name", "The Legend of Po part " + i);	server.add(doc);	if (i % 100 == 0)	server.commit(); // periodically flush	}	server.commit();	}

   注意,在建立索引的时候,不要每一个就去commit,为了提高效率,一般用

 Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();  for(){  SolrInputDocument doc = new SolrInputDocument();    docs.add(doc);  }   server.add(docs);   server.commit();

 其实 server.commit()效率也不高,一般用软提交

“solrcloud和solr在集群中建立索方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI