`
kylinsoong
  • 浏览: 235910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Solr学习笔记(四)Solr索引复制-示例说明

阅读更多

 准备:

为什么要进行索引复制呢?当有很多个客户并发访问某Solr服务器,这可能会导致Solr服务器崩溃(Solr服务器性能达不到这些客户并发访问的需求),这时就可以考虑通过索引复制,将索引复制到多个服务器上,这就是Solr的索引复制,如下图所示:

如图:Master Solr 为性能达不到很多客户并发访问的服务器,是需要被索引复制的服务器,Slave instances 为复制了Master Solr上索引的服务器,这样客户端可以访问Master Solr 和 Slave instances中的任意一个,以便降低了服务器性能的要求;

 

开始:

同时开启三台Tomcat服务器,端口号分别为:8080,8888,8983,8080代表Master Solr,8888和8983代表Slave instances ;

用前面学习笔记(三)中SolrjClient提供的借口向Master Solr(8080)添加数据,然后在Slave instances上测试;

说明:

要进行索引复制测试需要做一下配置:

Master Solr(8080),在solrconfig.xml中添加如下配置:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="master">
      <str name="replicateAfter">commit</str>
      <str name="replicateAfter">optimize</str>
      <str name="replicateAfter">startup</str>
      <str name="confFiles">schema.xml,stopwords.txt</str>
    </lst>
</requestHandler>

 

 

Slave instances(8888,8983)solrconfig.xml中添加如下配置:

 

<requestHandler name="/replication" class="solr.ReplicationHandler" >
   <lst name="slave">
      <str name="masterUrl">http://localhost:8080/solr/replication</str>
      <str name="pollInterval">00:00:60</str>
    </lst>
</requestHandler>

 

配置完后启动三台服务器;

可在控制台点击Replication查看复制页面后台控制页面,如下截图:

Master Solr(8080):

Slave instances(8888,8983):

 

如上图,可以通过上面所示Button控制索引的复制,如点击Replicate Now马上开始把Master上的索引复制到自己上,如果Disable Poll 值为disable时开启了自动复制功能,即当你Master上添加索引后马上复制到Slave上,可以单击该Button设他的值为enable;

向Master Solr(8080)上添加数据(SolrJClient):代码如下

List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
		for (int i = 0; i < 10; i++) {
			SolrInputDocument doc = new SolrInputDocument();
			doc.addField("id", i);
			doc.addField("severity",i);
			doc.addField("sLocation","Beijing_" + i);
			doc.addField("msg", "kobe bryant" + i);
			doc.addField("name", "kylin soong" + i);
			docs.add(doc);
		}
		client.addDocs(docs);

 

然后在他的Slave instances(8888,8983)任意一个上查询,你都会查询到上面添加到Master Solr上的数据,以8888为例,查询代码如下:

String url = "http://localhost:8888/solr";
SolrjClient client = new SolrjClient();
client.startSolrServer(url);
List<SolrDocument> lists = client.query("kobe");
System.out.println(lists.size());
for(SolrDocument doc : lists) {
			for(Iterator iterator = doc.iterator();iterator.hasNext();) {
				Map.Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
				System.out.print(entry.getKey() + "=" + entry.getValue() + " ");
				//				System.out.print(iterator.next() + "   ");
			}
			System.out.println();
		}

 

 

结果:

10
id=0 severity=0 sLocation=Beijing_0 msg=kobe bryant0 name=kylin soong0 
id=1 severity=1 sLocation=Beijing_1 msg=kobe bryant1 name=kylin soong1 
id=2 severity=2 sLocation=Beijing_2 msg=kobe bryant2 name=kylin soong2 
id=3 severity=3 sLocation=Beijing_3 msg=kobe bryant3 name=kylin soong3 
id=4 severity=4 sLocation=Beijing_4 msg=kobe bryant4 name=kylin soong4 
id=5 severity=5 sLocation=Beijing_5 msg=kobe bryant5 name=kylin soong5 
id=6 severity=6 sLocation=Beijing_6 msg=kobe bryant6 name=kylin soong6 
id=7 severity=7 sLocation=Beijing_7 msg=kobe bryant7 name=kylin soong7 
id=8 severity=8 sLocation=Beijing_8 msg=kobe bryant8 name=kylin soong8 
id=9 severity=9 sLocation=Beijing_9 msg=kobe bryant9 name=kylin soong9 

 

结束!

 

 

  • 大小: 16.5 KB
  • 大小: 35.6 KB
  • 大小: 76 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics