solr cloud系列-solrj的使用

这篇文章来介绍一下solr的java   api(solrJ)的使用方式,,主要是链接的建立和增删改查。
1.maven依赖,我这里使用的solrj6.1.0版本
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solr.version}</version>
</dependency>
2.创建查询的链接,下边代码是创建zk链接的代码
public class SolrCloudClient {

private static final Logger log = LogManager.getLogger();
private final static String zkHost="192.168.1.50:2181,192.168.1.51:2181,192.168.1.52:2181";



public static SolrClient getZkSolrClient() {
log.info("连接solr cloud,zkhost={} ", zkHost);
SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHost).build();
return solr;
}
}
3.几种经常使用的查询方式
获取链接
private static SolrClient solrClient=SolrCloudClient.getZkSolrClient();
SolrQuery query = new SolrQuery();


(1)  q条件查询方式,查询字段。

query.setQuery("id:100001");
如果想在q查询中多条件查询,需要用AND 把查询条件分割开,一定是大写的 AND
query.setQuery("id:100001 and name=某某");


(2)  fq查询方式,辅助查询,是指在q查询结果中同时符合fq的查询条件,可以设置多个。

query.addFilterQuery("provinceCode:"+provinceCode); 
query.addFilterQuery("cityCode:"+cityCode); 
fq的查询方式还可以写成1行,
query.addFilterQuery("provinceCode:1000 AND cityCode:1002"); 
fq的两种写法都回返回相同的结果,但是solr查询运算的过程不过,第一种是加载了2次filterQuery来进行运算,这样需要多进行一次交集运算。
第二种方式是一次计算fq的值,但是比较耗内存,这个要看大家的选择,后续会讲下solr优化。


(3) 分页查询,solr里是用start和rows来实现分页的

query.setStart(0);
query.setRows(10);


(4)  设置需要返回的字段和查询的集合

query.setFilterQueries("id,name");

query.set("collection","student")


(5)  设置排序的字段,用id正序排序

import  org.apache.solr.client.solrj.SolrQuery.ORDER

query.setSort("id", ORDER.asc.reverse());


(6)  查询并返回json数据,也可以返回bean类,看自己的选择

QueryResponse response=solrClient.query(query);

SolrDocumentList  list=response.getResults();
JSONArray arrJson = new JSONArray();
for(SolrDocument document:list){

arrJson.add(document);
}
return arrJson.toJSONString();


这里简单介绍了下solrj简单查询的方式,后面再介绍facet查询方式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值