在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对比的更多相关文章

  1. VS2015预览版中的C#6.0 新功能(二)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...

  2. VS2015预览版中的C#6.0 新功能(三)

    VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...

  3. VS2015预览版中的C#6.0 新功能(一)

    VS2015预览版中的C#6.0 新功能(二) VS2015预览版中的C#6.0 新功能(三) VS2015的预览版在11月12日发布了,下面让我们来看看C#都提供了哪些新的功能. 字符串添写(Str ...

  4. [转帖]InfluxDB 1.2.0安装及新旧版本的注意事项

    InfluxDB 1.2.0安装及新旧版本的注意事项 http://haibing.org/245?zwlqby=npztq3 挺好的文章 很好的解决了 上一个文档里面 关于 web admin 的问 ...

  5. Java中的ReentrantLock和synchronized两种锁定机制的对比

    问题:多个访问线程将需要写入到文件中的数据先保存到一个队列里面,然后由专门的 写出线程负责从队列中取出数据并写入到文件中. http://blog.csdn.net/top_code/article/ ...

  6. 浅谈 angular新旧版本问题

    一直在学习angularJs,之前用的版本比较老,前些天更新了一下angularJs的版本,然后发现了一些问题,希望和大家分享一下. 在老的版本里控制器直接用函数定义就可以 比如: 在angularJ ...

  7. Android新旧版本Notification

    Android新旧版本Notification 在notification.setLatestEventInfo() 过时了 以前: NotificationManager mn = (Notific ...

  8. Android技巧小结之新旧版本Notification

    最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...

  9. java中只能有一个实例的类的创建

    Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...

随机推荐

  1. Https 协议解析

    1 概述1.1 HTTPS    使用SSL协议,对HTTP协议通信过程中的明文数据加密,这就是HTTPS.网络分层结构如下: SSL协议负责数据加密,解密,位于HTPP协议和TCP协议之间.    ...

  2. 【转】java导出多个excel表格,并压缩成zip输出

    转自:http://blog.csdn.net/qq_14861089/article/details/53169414    感谢作者分享 /** * 导出支付宝批量支付文件excel * * @p ...

  3. 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战

    笔记 1.SpringBoot多环境配置介绍和项目实战(核心知识)     简介:SpringBoot介绍多环境配置和使用场景 1.不同环境使用不同配置         例如数据库配置,在开发的时候, ...

  4. .NetCore 使用VSCode多项目调试

    使用VSCode可以调试.Net Core,但是调多个项目就需要进行一番设置. 首先创建一个总文件夹,以NetProjects文件夹为例,并创建一个解决方案.然后创建俩个.NetCore项目,并添加到 ...

  5. Windows下查找文件或文件夹被哪个进程占用

    Linux下我们可以使用lsof +D /filepath/,查看到文件被那些进程占用. windows下也会经常遇到文件夹或文件无法删除或无法访问的问题,使用“资源监视器”可以找到占用的进程,可以尝 ...

  6. 日期格式存入字符类型之后,再转回datetime类型报错

    背景 最近我们迁移了一批服务器,因我们在azure portal 上新开的VM暂时默认只有英文系统,所以我们在开设好的数据库服务器的时候,都会重置数据库字符排序成中文,避免出现中文乱码问题,重置参考路 ...

  7. Oracle11g安装出现时未能满足某些最低安装要求

    需要开启C盘共享,才能检测硬件是否满足要求.cmd命令:net share c$=c::或者勾选全部忽略,继续下一步安装. 可参考https://blog.csdn.net/huazicomeon/a ...

  8. mac 安装photoshop + 破解

    项目开发中毫无疑问会用到图片,一般情况都是UI将图片切好的,只是,有时候项目中少了一张图片或者是改变图片的尺寸之类的问题,这里我们就不需要每次都找UI要图片了,作为程序员这些基础工具的使用,咱们还是要 ...

  9. 调用redis封装好的JedisUtils接口实现锁库

    1.在进行数据库操作的方法前先定义一个key值,并添加一个能区别每个key的标识 2.首先判断如果定义的key值存在的话,就直接return方法,如果不存在的话,就把key值放在jedisutil中, ...

  10. 记一次 Vultr配置

    这里不想排版,因为心情复杂. 第一次搞这个VPS,真的是很气人,由于中英文的关系我一开始就误操作了,让VPS一直挂载着Ubuntu18.10,所以系统一直是在光盘的引导界面,这个问题知道我注册后的四个 ...