摘要: Solr有多种客户端工具,诸如JavaScript、Python、Java、Ruby等。对于熟悉这些编程语言的使用者来说,使用客户端工具可以很方便地操作Solr。
简介
使用SolrJ可以让Java程序员专注于Java代码的编写,不必关注Solr的实现细节。你可以在org.apache.solr.client.solrj
找到SolrJ的Jar包。这里Jar包只用5个主要的类。对于使用者来说,只需要用SolrClient
来创建一个Solr实例,然后发送SolrRequest
或者SolrQuerys
并拿到SolrResponse
。
使用
SolrClient
是一个抽象类,主要是为了链接到Solr服务,真正创建的是HttpSolrClient
或者是CloudSolrClient
。他们都是利用HTTP请求,只不过一个用到了真实的URL,一个用的是zkHost来配置。
单实例Solr
String urlString = "http://localhost:8983/solr/core0";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();
SolrCloud
String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr";
SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();
创建好了SolrClient,就可以方便地使用其提供的各种操作:query(),add(),commit()。
打包Java程序
如果你已经有了SolrJ的包,那么你可能会将其放置于classpath的lib下。这个文件命名大概会是solr-solrj-x.y.z.jar
。
对于常见形式,你可能会用到Maven来管理项目,那么所需的依赖形式如下:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>x.y.z</version>
</dependency>
EmbeddedSolrServer
SolrClient还有一种形式EmbeddedSolrServer,它可以使你Java应用方便地与Solr交互,但是它提供的是一种简略版,不支持像SolrCloud和Index Replication等功能,所以一般用于测试环境。在JUnit测试时使用EmbeddedSolrServer是一个不错的选择。