什么是SolrJ
SolrJ是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务。
SolrJ主要方法
SolrJ相关的类都包含在Solr源码的org.apache.solr.client.solrj包下,该包下面主要包含了5个关键类。SolrClient、SolrRequest、SolrQuery、SolrResponse、ResponseParser。其中SolrClient类表示Solr Client是一个Solr客户端的抽象。通过SolrClient你可以与Solr Server进行如下操作。
add
添加一个索引文档到Solr Server,为了支持面向对象编程,SolrClient提供了addBean方法,允许直接提交一个Java对象,SolrClient内部会借助DocumentObjectBinder来完成Java对象与SolrInputDocument对象之间的类型转换。为了支持批量添加索引文档,你还可以直接add一个Document集合或者通过addBeans方法添加一个对象集合。
commit
即显式的提交一个索引硬提交请求。
optimize
即显式的要求Solr Server执行一次索引优化,会触发Solr的索引段文件合并,此操作一般不建议调用太频繁。
rollback
即显式的要求Solr Server将尚未提交的索引文档从队列中剔除,此回滚操作并不像是关系型数据库里的回滚操作,它不保证100%会回滚,因为你上一次提交的索引文档可能会由于你配置了AutoCommit,可能刚好由于缓冲区满了导致一次索引Flush、或者AutoCommit的间隔时间或者最大缓存索引文档个数达到临界值自动出发了一次硬提交,或者另一个SolrClient客户端显式的发起了commit操作导致索引已经提交,此时索引文档已经写入到硬盘。,rollback操作将无济于事。
deleteById &deleteByQuery
这两个方法主要用于向Solr Server发起一个索引删除操作,deleteById表示根据Document的主键ID来删除索引文档,这里的主键ID是你在schema.xml中配置的uniqueKey。deleteByQuery用于按照Solr查询来删除多个索引文档。
query & getById
这组方法主要用于向Solr Server发起一个查询请求,其中getById方法是一个特殊的查询请求,即根据索引文档的主键ID进行查询,前提是你的schema.xml配置了uniqueKey。
ping
用于发起一个ping请求来检测Solr Server是否还“活着”,前提是你需要在Solrconfig.xml中配置PingRequestHandler。
<!-- ping/healthcheck -->
<requestHandler name="/admin/ping" class="solr.PingRequestHandler">
<lst name="invariants">
<str name="q">solrpingquery</str>
</lst>
<lst name="defaults">
<str name="echoParams">all</str>
</lst>
<!-- <str name="healthcheckFile">server-enabled.txt</str> -->
</requestHandler>
request
用于向Solr Server的指定Core或Collection发起一个HTTP请求。