solr cloud系列-solrj的使用
2017-03-03 14:22
302 查看
这篇文章来介绍一下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查询方式。
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查询方式。
相关文章推荐
- 淘淘商城系列——使用SolrJ管理Solr集群
- solr系列--solrj使用
- 【Apache Solr系列之五】使用Solr客户端SolrJ实现多层面统计
- Solr学习笔记五--solrj的使用(查询文档)
- 【Apache Solr系列之三】Solr客户端SolrJ API使用文档-增删改
- 使用solrj和EasyNet.Solr进行原子更新
- 使用solrj和EasyNet.Solr进行原子更新
- ISV客户博客系列:Persistent Systems 使用Windows Azure交付基于Java的CloudNinja项目
- 项目记录:solr4.2 在tomcat7 的两种(singlecore + multicore) 配置安装 及solrj 的初步使用
- Solr学习笔记四--solrj的使用(更新文档)
- Apache Solrj EmbeddedSolrServer使用
- solrcloud使用问题记录
- Solr Server对外提供Web Service的沟通方式 使用SolrJ跟Solr Server通信
- 3.跟我学solr---使用solrj添加索引
- solr配置与solrj EmbeddedSolrServer使用篇
- 【Apache Solr系列之四】Solr客户端SolrJ API使用文档-查询实例
- ISV客户博客系列:Persistent Systems 使用Windows Azure交付基于Java的CloudNinja项目
- SOLR企业搜索平台 三 (schema.xml配置和solrj的使用)
- 使用solrj操作solr
- 使用外部zookeeper 在tomcat下配置solrcloud