SolrJ是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ一般在嵌入在业务系统中,经过SolrJ的API接口操做Solr服务。html
SolrJ相关的类都包含在Solr源码的org.apache.solr.client.solrj包下,该包下面主要包含了5个关键类。SolrClient、SolrRequest、SolrQuery、SolrResponse、ResponseParser。其中SolrClient类表示Solr Client是一个Solr客户端的抽象。经过SolrClient你能够与Solr Server进行以下操做。java
添加一个索引文档到Solr Server,为了支持面向对象编程,SolrClient提供了addBean方法,容许直接提交一个Java对象,SolrClient内部会借助DocumentObjectBinder来完成Java对象与SolrInputDocument对象之间的类型转换。为了支持批量添加索引文档,你还能够直接add一个Document集合或者经过addBeans方法添加一个对象集合。数据库
即显式的提交一个索引硬提交请求。apache
即显式的要求Solr Server执行一次索引优化,会触发Solr的索引段文件合并,此操做通常不建议调用太频繁。编程
即显式的要求Solr Server将还没有提交的索引文档从队列中剔除,此回滚操做并不像是关系型数据库里的回滚操做,它不保证100%会回滚,由于你上一次提交的索引文档可能会因为你配置了AutoCommit,可能恰好因为缓冲区满了致使一次索引Flush、或者AutoCommit的间隔时间或者最大缓存索引文档个数达到临界值自动出发了一次硬提交,或者另外一个SolrClient客户端显式的发起了commit操做致使索引已经提交,此时索引文档已经写入到硬盘。,rollback操做将无济于事。api
这两个方法主要用于向Solr Server发起一个索引删除操做,deleteById表示根据Document的主键ID来删除索引文档,这里的主键ID是你在schema.xml中配置的uniqueKey。deleteByQuery用于按照Solr查询来删除多个索引文档。缓存
这组方法主要用于向Solr Server发起一个查询请求,其中getById方法是一个特殊的查询请求,即根据索引文档的主键ID进行查询,前提是你的schema.xml配置了uniqueKey。ide
用于发起一个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>
复制代码
用于向Solr Server的指定Core或Collection发起一个HTTP请求。ui