今日内容一:SolrCloud集群的搭建
今日内容二:使用solrJ管理集群
添加文档
使用步骤:
第一步:把solrJ相关的jar包添加到工程中。
第二步:创建一个SolrServer对象,需要使用CloudSolrServer子类。构造方法的参数是zookeeper的地址列表。
第三步:需要设置DefaultCollection属性。
第四步:创建一SolrInputDocument对象。
第五步:向文档对象中添加域
第六步:把文档对象写入索引库。
第七步:提交。
/**
* solrCloud集群版的添加文档测试
* <p>Title: testSolrCloudDocument</p>
* <p>Description: </p>
* @throws SolrServerException
* @throws IOException
*/
@Test
public void testSolrCloudDocument() throws SolrServerException, IOException{
// 第一步:把solrJ相关的jar包添加到工程中。
// 第二步:创建一个SolrServer对象,需要使用CloudSolrServer子类。构造方法的参数是zookeeper的地址列表。
CloudSolrServer solrServer = new CloudSolrServer("192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183");
// 第三步:需要设置DefaultCollection属性。
solrServer.setDefaultCollection("collection2");
// 第四步:创建一SolrInputDocument对象。
SolrInputDocument document = new SolrInputDocument();
// 第五步:向文档对象中添加域
document.addField("item_title", "巴基斯坦");
document.addField("item_price", "100");
document.addField("id", "test001");
// 第六步:把文档对象写入索引库。
solrServer.add(document);
// 第七步:提交。
solrServer.commit();
}
/**
* 使用sorlJ 简单查询索引库
* @throws SolrServerException
*/
@Test
public void queryIndex() throws Exception {
//创建一个SolrServer对象。
CloudSolrServer solrServer = new CloudSolrServer("192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183");
// 第三步:需要设置DefaultCollection属性。
solrServer.setDefaultCollection("collection2");
//创建一个SolrQuery对象。
SolrQuery query = new SolrQuery();
//设置查询条件。
//query.setQuery("*:*");
query.set("*:*");
//执行查询,QueryResponse对象。
QueryResponse queryResponse = solrServer.query(query);
//取文档列表。取查询结果的总记录数
SolrDocumentList solrDocumentList = queryResponse.getResults();
System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
//遍历文档列表,从取域的内容。
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("id"));
}
}
把搜索功能切换到集群版,切换就是互相注释即可:
<!-- 单机版solr服务配置 -->
<!-- <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg index="0" value="http://192.168.25.129:8080/solr/collection1"/>
</bean> -->
<!-- 集群版solrCloud服务配置 -->
<bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183"/>
<property name="defaultCollection" value="collection2"/>
</bean>
今日内容三:全局异常处理
处理思路
创建全局异常处理器:
/**
* 全局异常处理
* <p>Title: GlobalExceptionReslover</p>
* <p>Description: </p>
* <p>Company: www.itcast.cn</p>
* @version 1.0
*/
public class GlobalExceptionReslover implements HandlerExceptionResolver {
private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionReslover.class);
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler,Exception ex
) {
//打印控制台
ex.printStackTrace();
//写日志
logger.debug("测试输出的日志........");
logger.info("系统发生异常了.........");
logger.error("系统发生异常了",ex);
// 发邮件、发短信
// 使用jmail工具包。发短信使用第三方的Webservice。
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error/exception");
// 显示错误页面
return modelAndView;
}
}
Springmvc中配置异常处理器
<!-- 设置全局异常处理器 -->
<bean class="cn.e3mall.search.exception.GlobalExceptionReslover"></bean>
创建一个配置文件,log4j.properties
log4j.rootLogger=INFO,A3,STDOUT
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=logs/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n