首页 > 学院 > 开发设计 > 正文

solr cloud系列-solrj的使用

2019-11-06 08:15:19
字体:
来源:转载
供稿:网友

这篇文章来介绍一下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 把查询条件分割开,一定是大写的 ANDquery.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查询方式。


上一篇:捕鱼和分鱼

下一篇:怎样存利最大

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表