千家信息网

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

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇内容介绍了"solrcloud和solr在集群中建立索方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,
千家信息网最后更新 2025年01月22日solrcloud和solr在集群中建立索方法是什么

本篇内容介绍了"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 docs = new ArrayList(); for(){ SolrInputDocument doc = new SolrInputDocument();   docs.add(doc); }  server.add(docs);  server.commit();

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

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

0