在java中使用solr7.2.0 新旧版本创建SolrClient对比
在Java中使用solr 版本7.2.0
solrj已经更新到了7.2.0,新版本solr获取SolrClient的方式也和之前旧版本有所不同
solr6.5开始不推荐直接使用HttpSolrClient的构造方法创建SolrClient(6.5之前版本的创建方式在页末)
从7.0.0开始删除了HttpSolrClient创建客户端的构造方法,使用内部类Builder构建SolrClient
安装solr:https://my.oschina.net/u/2931319/blog/1595303
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; /**
* Java中使用solr
* @author jaffreyen
* @date 2018/1/9
*/
public class SolrConnect { // solr url
private final static String BASE_URL = "http://localhost:8081/solr"; /**
* 获取SolrClient
* solrj 6.5及以后版本获取方式
* @return
*/
public static HttpSolrClient getSolrClient(){
/*
* 设置超时时间
* .withConnectionTimeout(10000)
* .withSocketTimeout(60000)
*/
return new HttpSolrClient.Builder(BASE_URL)
.withConnectionTimeout(10000)
.withSocketTimeout(60000)
.build();
} @Test
public void testQuery() throws IOException, SolrServerException {
HttpSolrClient solrClient = getSolrClient();
// 定义查询条件
Map<String, String> params = new HashMap<String, String>();
params.put("q", "*:*");
SolrParams mapSolrParams = new MapSolrParams(params);
//执行查询 第一个参数是collection,就是我们在solr中创建的core
QueryResponse response = solrClient.query("RoleVO", mapSolrParams);
// 获取结果集
SolrDocumentList results = response.getResults();
for (SolrDocument result : results) {
// SolrDocument 数据结构为Map
System.out.println(result);
}
} @Test
public void testAdd() throws IOException, SolrServerException {
HttpSolrClient solrClient = getSolrClient();
// 定义数据 solr输入文档 数据结构为Map
SolrInputDocument inputDocument = new SolrInputDocument();
inputDocument.addField("id","123");
inputDocument.addField("roleName", "角色名称");
// 执行添加 ps:如果id相同,则执行更新操作
// 要指定操作的collection 就是solr-home下定义的core
UpdateResponse add = solrClient.add("RoleVO", inputDocument);
//提交添加/更新
solrClient.commit("RoleVO");
} @Test
public void testDelete() throws IOException, SolrServerException {
HttpSolrClient solrClient = getSolrClient();
// 通过id删除 执行要删除的collection(core)
solrClient.deleteById("RoleVO", "123");
// 还可以通过查询条件删除
// solrClient.deleteByQuery("RoleVO", "查询条件");
// 提交删除
solrClient.commit("RoleVO");
}
}
solrj6.5之前的初始化SolrClient方式
/**
* 获取SolrClient
* solrj 6.5以前的获取方式
* @return
*/
public static HttpSolrClient getSolrClient(){
return new HttpSolrClient(BASE_URL);
}
参考:
https://blog.csdn.net/jaffreyen/article/details/79081809
https://blog.csdn.net/u010510107/article/details/81051795
在java中使用solr7.2.0 新旧版本创建SolrClient对比的更多相关文章
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
- VS2015预览版中的C#6.0 新功能(三)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...
- VS2015预览版中的C#6.0 新功能(一)
VS2015预览版中的C#6.0 新功能(二) VS2015预览版中的C#6.0 新功能(三) VS2015的预览版在11月12日发布了,下面让我们来看看C#都提供了哪些新的功能. 字符串添写(Str ...
- [转帖]InfluxDB 1.2.0安装及新旧版本的注意事项
InfluxDB 1.2.0安装及新旧版本的注意事项 http://haibing.org/245?zwlqby=npztq3 挺好的文章 很好的解决了 上一个文档里面 关于 web admin 的问 ...
- Java中的ReentrantLock和synchronized两种锁定机制的对比
问题:多个访问线程将需要写入到文件中的数据先保存到一个队列里面,然后由专门的 写出线程负责从队列中取出数据并写入到文件中. http://blog.csdn.net/top_code/article/ ...
- 浅谈 angular新旧版本问题
一直在学习angularJs,之前用的版本比较老,前些天更新了一下angularJs的版本,然后发现了一些问题,希望和大家分享一下. 在老的版本里控制器直接用函数定义就可以 比如: 在angularJ ...
- Android新旧版本Notification
Android新旧版本Notification 在notification.setLatestEventInfo() 过时了 以前: NotificationManager mn = (Notific ...
- Android技巧小结之新旧版本Notification
最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...
- java中只能有一个实例的类的创建
Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...
随机推荐
- LC 244. Shortest Word Distance II 【lock, Medium】
Design a class which receives a list of words in the constructor, and implements a method that takes ...
- 非监督的降维算法--PCA
PCA是一种非监督学习算法,它能够在保留大多数有用信息的情况下,有效降低数据纬度. 它主要应用在以下三个方面: 1. 提升算法速度 2. 压缩数据,减小内存.硬盘空间的消耗 3. 图示化数据,将高纬数 ...
- 1.Oracle 11g 精简客户端
大型项目开发中,当属Oracle的使用率最高.通常开发人员的机器上都会装上一个 oracle客户端,但一般我们不会再自己的机器上安装Oracle database,因为我们的项目中有专为开发使用的or ...
- 六十三:CSRF攻击与防御之系统准备之登录与转账功能
登录功能 在forms里面添加验证 class LoginForm(Form): email = StringField(validators=[Email(message='邮箱格式错误')]) p ...
- Kafka-manager安装部署
一.kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很 ...
- golang(09) golang 接口内部实现
原文链接 http://www.limerence2017.com/2019/09/24/golang14/#more 前文介绍过golang interface用法,本文详细剖析interface内 ...
- 【Java】递归删除目录以及文件
public static void deleteDirectory(String path) { File pFile = new File(path); //若目录以及文件不存在,则终止继续执行方 ...
- Git-T
或在命令行上创建一个新的存储库echo“#gittest”>> README.md git init git add README.md git commit -m“first commi ...
- 实现文件上传功能(FileUpload组件)
文件上传: 项目中经常用到文件上传. 自己实现文件上传,使用文件上传组件fileupload组件 1.指定表单类型为文件上传, enctype=”multipart/form-data” 2.提交方式 ...
- 通过URLOS安装Redis缓存为wordpress网站提速
快!快!快!我们都知道网站的加载速度直接影响用户体验.据研究发现,网站页面在3秒内加载完毕对用户而言是最佳的浏览体验.如果超过这个时间,用户跳出网站的几率会非常大.所以对于站长来说,提高速度是他们追求 ...