首先,大家肯定是要先搭建Solr集群的,关于Solr集群的搭建,我的淘淘商城系列——Solr集群搭建这篇博客已经做了非常详细的说明,大家可以参考搭建。
刚搭建好的Solr集群,是没有任何索引数据的,如下图所示。
接下来,我们就使用SolrJ来管理Solr集群。首先看看怎么向索引库中添加文档,我们在taotao-search-service工程的src/test/java目录下的com.taotao.solrj包中新建一个TestSolrCloud单元测试类,然后编写一个测试方法,如下图所示。
为方便大家复制,现把TestSolrCloud单元测试类的代码贴出。
public class TestSolrCloud {
@Test
public void testSolrCloud() throws Exception {
// 操作步骤:
// 第一步,创建一个SolrServer对象,需要使用CloudSolrServer子类对象,它有一个构造方法,
// 构造方法有一个参数,叫做zkHost,是一个字符串类型,也即zookeeper的地址列表
CloudSolrServer solrServer = new CloudSolrServer("192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183");
// 第二步,需要指定默认的collection
solrServer.setDefaultCollection("collection2");
// 第三步,向索引库中添加文档,和单机版一致
SolrInputDocument document = new SolrInputDocument();
document.setField("id", "1");
document.setField("item_title", "测试商品");
document.setField("item_price", "199");
solrServer.add(document);
// 第四步,提交
solrServer.commit();
}
}
testSolrCloud方法执行成功后,我们到Solr集群中查询,发现可以查到我们刚才添加的记录,如下图所示。
下面我们来看看如何从索引库中删除文档,就把刚才向索引库中添加的文档删除掉。在TestSolrCloud单元测试类编写一个测试方法,如下图所示。
为方便大家复制,现把TestSolrCloud单元测试类中testDeleteDocument方法的代码贴出。
// 删除文档
@Test
public void testDeleteDocument() throws Exception {
// 第一步,创建一个SolrServer对象,应该使用CloudSolrServer对象,它有一个构造方法,
// 构造方法有一个参数,叫做zkHost,是一个字符串类型,也即zookeeper的地址列表
CloudSolrServer solrServer = new CloudSolrServer("192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183");
// 第二步,需要指定默认的collection
solrServer.setDefaultCollection("collection2");
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
以上方法执行成功后,我们到Solr集群中查询,可以发现我们刚才添加的记录已经被删除掉了,如下图所示。