一、SolrJ简介
SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的Java接口。通过solrJ提供的API接口来操作solr服务,SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。
二、依赖配置
<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>7.7.1</version>
</dependency>
三、简单实例
接这篇文章的结果Solr-导入MySQL数据
当前core中已存在的信息如图:
1、添加文档
@Test
public void testAdd() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.创建一个文档对象SolrInputDocument inputDocument = new SolrInputDocument();//向文档中添加域以及对应的值(注意:所有的域必须在schema.xml中定义过,前两篇导入时已定义)inputDocument.addField("id", "5");inputDocument.addField("product_title", "裙子");inputDocument.addField("product_sell_point", "爆款");//3.将文档写入索引库中solrServer.add(inputDocument);//4.提交solrServer.commit();
}
添加成功后,页面可直接查看如图:
2、更新文档(其实更新的内容不存在则是新增)
@Test
public void testUpdate() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.创建一个文档对象SolrInputDocument inputDocument = new SolrInputDocument();inputDocument.addField("id", "5");//修改id为5的商品的信息(商品存在则更新,不存在则新增)inputDocument.addField("product_title", "2020裙子");inputDocument.addField("product_sell_point", "2020爆款");//3.将文档写入索引库中solrServer.add(inputDocument);//4.提交solrServer.commit();
}
更新成功后,页面可直接查看如图:
3、查询单个
@Test
public void testQuery() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.创建查询语句SolrQuery query = new SolrQuery();//3.设置查询条件query.set("q", "id:5");//4.执行查询QueryResponse queryResponse = solrServer.query(query);//5.取文档列表(public class SolrDocumentList extends ArrayList<SolrDocument>)SolrDocumentList documentList = queryResponse.getResults();for (SolrDocument solrDocument : documentList) {System.out.println("id:"+solrDocument.get("id")+" ");System.out.println("标题:"+solrDocument.get("product_title")+" ");System.out.println("卖点:"+solrDocument.get("product_sell_point")+" ");}
}
执行结果:
id:5
标题:2020裙子
卖点:2020爆款
4、根据条件查询
@Test
public void testQueryByCon() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.创建查询语句SolrQuery query = new SolrQuery();//3.设置查询条件query.set("q", "*款");//设置查询关键字query.setSort("id", SolrQuery.ORDER.desc);//按照id降序排列query.setStart(0);query.setRows(5);//分页条件query.set("df", "product_sell_point");//默认在商品卖点域进行查询//4、执行查询QueryResponse queryResponse = solrServer.query(query);//5.获取文档列表SolrDocumentList documentList = queryResponse.getResults();System.out.println("总记录数:" + documentList.getNumFound());for (SolrDocument solrDocument : documentList) {System.out.println("id:"+solrDocument.get("id")+" ");System.out.println("标题:"+solrDocument.get("product_title")+" ");System.out.println("卖点:"+solrDocument.get("product_sell_point")+" ");}
}
执行结果:
总记录数:3
id:5
标题:2020裙子
卖点:2020爆款
id:2
标题:裤子
卖点:新款
id:1
标题:短袖
卖点:新款
5、根据id删除文档
@Test
public void testDeleteById() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.删除文档solrServer.deleteById("5");//3.提交solrServer.commit();
}
删除成功后,页面可直接查看
6、根据条件删除文档
@Test
public void testDeleteByCon() throws Exception{//1.创建连接HttpSolrClient solrServer = new HttpSolrClient.Builder("http://localhost:8983/solr/zym").build();//2.删除文档solrServer.deleteByQuery("product_sell_point:2020爆款");//3.提交solrServer.commit();
}
…
至此,Solrj简单使用结束
文章仅作为个人学习整理