solr<二> Java 操作 solr CURD

xiaoxiao2021-02-28  119

一般来说 操作solr 有两种方式,一:是 http rest 方式,二:Java 操作 solrj ,这里我们都是通过Java的 作为solr 的客户端去操作; 创建索引 第一种添加方式,通过添加Field创建索引文档 使用addField添加索引域,然后通过add(document)添加索引文档 package com._656464.solr.test; import java.io.IOException; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; import org.junit.Before; import org.junit.Test; /** * 使用solrj 来调用solr 的服务 */ public class SolrTest { SolrServer solr = null; @Before public void init(){ String urlString = "http://localhost:8983/solr"; solr = new HttpSolrServer(urlString); } @Test public void addIndex() throws SolrServerException, IOException{ SolrInputDocument document=new SolrInputDocument(); //第一种添加方式,通过添加Field创建索引文档 document.addField("id", "1"); document.addField("name", "领悟书生"); solr.add(document); solr.commit(); } } 第二种添加方式,通过添加bean创建索引文档 创建一个实体,实体的属性使用 Field注解 package com._656464.solr.test; import org.apache.solr.client.solrj.beans.Field; public class TestObj { @Field(value = "id") private int id; @Field(value = "name") private String name; @Field(value = "content") private String content; @Field(value = "price") private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } } 对bean初始化并赋值后,使用solr的addBean方法把该对象添加到索引中 //第二种添加方式,通过添加bean创建索引文档 TestObj obj=new TestObj(); obj.setId(2); obj.setName("领悟书生"); obj.setContent("书生在学solr"); obj.setPrice(1024); solr.addBean(obj); solr.commit(); 第三种:批量 添加(docs/beans) //第三种添加方式,通过添加bean列表创建多个索引文档 List<TestObj> list=new ArrayList<TestObj>(); TestObj obj=null; for(int i=1;i<=25;i++){ obj=new TestObj(); obj.setId(i); obj.setName("领悟书生"+i); obj.setContent("书生在学solr"+i); obj.setPrice(1024); list.add(obj); } solr.addBeans(list); solr.commit(); 删除索引 删除比较简单,直接调用SolrServer 的deleteById即可 @Test public void delete() throws SolrServerException, IOException { String urlString = "http://localhost:8983/solr"; SolrServer solr = new HttpSolrServer(urlString); solr.deleteById("1"); solr.commit(); } 更新索引 更新索引和创建索引一样,只要ID一样,则覆盖 查询文档 使用SolrQuery 构造查询参数,然后通过solr的query方法返回QueryResponse 查询返回对象,然后获取queryResponse的结果集,最后遍历结果集即可 public void testFind() throws SolrServerException { // 以后参数都是通过这个对象去构造... SolrQuery solrParams = new SolrQuery(); solrParams.setQuery("name:书生"); QueryResponse queryResponse = solr.query(solrParams); // 返回结果,默认只返回10条记录 SolrDocumentList documentList = queryResponse.getResults(); for (SolrDocument solrDocument : documentList) { Object id = solrDocument.get("id"); Object name = solrDocument.get("name"); System.out.println(id); System.out.println(name); } }

转载请注明原文地址: https://www.6miu.com/read-27939.html

最新回复(0)