SolrJ提供以java的方式进行索引的添加、查询、删除、修改。solrj为我们隐藏了一系列的与solr连接细节,通过简单的方法就可以实现对索引的操作。
一、导包
如果你是使用maven的话,就只需要在pom.xml中加入以下内容,就可以了。maven会自动帮你下载相关的依赖。
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.6.0</version>
</dependency>
但是,如果你不是用的maven,需要自己导包的话,除了添加solr-solrj.jar外,还需要添加以下依赖:
二、使用solrj-api
在使用api之前你必须保证你将要连接的solr服务器已经是处于启动的状态了。
1. Solr client
String urlString = "http://localhost:8983/solr/coreName";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
创建了solrclient对象之后,你可以通过这个对象调用query()、add()等方法。
2. 进行查询
SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);
- mQueryString是查询的参数,是key:value的形式。例如查询name字段包含123的索引,那么改查询参数就应该是
name:%123%
。 - 使用
query.setFields("category", "title", "price");
设置查询后返回的字段,也就是solr页面上的fl参数。
3. 提交查询并得到响应结果
QueryResponse response = solr.query(query);
// 可以将list转成JSON便于解析,也可以通过solr的方法根据字段名获得相应字段值
SolrDocumentList list = response.getResults();
4. 添加索引数据
通过构建SolrInputDocument的对象来添加索引。
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "123");
UpdateResponse response = solr.add(document);
// 一定不能忘记最后的commit
solr.commit();
也可以用注解的方式,直接操作bean进行添加。
import org.apache.solr.client.solrj.beans.Field;
public class Item {
@Field
String id;
@Field
String name;
}
Item item = new Item();
item.id = "1";
item.name = "test";
client.addBean(item);
solr.commit(); // 这一句很关键
5. 删除索引数据
删除查询到的数据,用这个方法可以删除所有数据
solr.deleteByQuery("*:*"); // 删除查询到的内容,如果是查询所有那么就是全部删除
solr.commit(); // 这个语句必须要,不然无法得到想要的效果
6. 修改数据
和添加索引一样,需要注意的是根据id来确定更新的doc,所以提交的内容中一定要有有效的id,不然的话就变成add了。