java操作solr
2024-08-31 14:07:31
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>8.1.0</version>
</dependency>
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient; public class SolrClient { private volatile static SolrClient solrClient;
private SolrClient(){}
public static SolrClient getSolrClient(String url) {
if (solrClient == null) {
synchronized (MySolrClient.class) {
if (solrClient == null) {
solrClient = new HttpSolrClient.Builder(url)
.withConnectionTimeout(10*1000)
.withSocketTimeout(30*1000)
.build();
}
}
}
return solrClient;
}
}
/**
* 添加或者更新solr库
* 单条数据
* @param document
* @return
*/
public static String addByDoc(SolrInputDocument document, String url) {
SolrClient solrClient = MySolrClient.getSolrClient(url);
String result = "success";
try {
solrClient.add(document);
solrClient.commit();
log.info("insert doc to solr success!");
} catch (Exception e) {
result = "failed";
loggerErrToSolr(e);
}
return result;
} /**
* 添加或者更新solr库
* 多条数据
* @param docs
* @return
*/
public static String addByList(List<SolrInputDocument> docs, String url) {
SolrClient solrClient = MySolrClient.getSolrClient(url);
String result = "success";
try {
solrClient.add(docs);
solrClient.commit();
log.info("insert list to solr success!");
} catch (Exception e) {
result = "failed";
loggerErrToSolr(e);
}
return result;
}
如果是更新已经存在的记录里面的某个字段,可以这样实现:
SolrInputDocument updateDocument = new SolrInputDocument();
updateDocument.addField("FEATUREID", requestAddLayerElementDisable.getLayerName() + "_" + requestAddLayerElementDisable.getElement());//类似于id
Map<String, Object> operationMap = new HashMap<String, Object>();
operationMap.put("set", false);//要设置的值
updateDocument.addField("VISIBLE", operationMap);//要更新的字段
SolrUtil.addByDoc(updateDocument, jmsConfig.getSolrUrl());
最新文章
- .NET平台开源项目速览(17)FluentConsole让你的控制台酷起来
- input文本框录入字母自动大写
- 我心中的MySQL DBA
- MongoDB-C#驱动基本操作
- http://www.cnblogs.com/figure9/p/developer-reading-list.html
- jquery插件之文字无缝向上滚动
- POJ 1013 Counterfeit Dollar
- linux服务之vnc和x2go
- POJ 1146 ID Codes (UVA146)
- 在vim中设置 &#39;打印时间&#39;的快捷键.
- libevent入门(1)
- 读取系统执行状态的shell脚本
- delphi BitmapCompress
- 【Alpha】——Sixth Scrum Meeting
- mv&;cp
- PHP处理上传文件信息数组中的文件类型 正确获取
- 深入理解JVM——虚拟机GC
- Matlab 根号的输入
- vscode 使用iView时标签报错 Parsing error: x-invalid-end-tag
- Windows系统80端口被占用
热门文章
- [LeetCode] 109. 有序链表转换二叉搜索树
- Python 入门之编码
- 如何使用js在移动端和PC端居中
- styled-components缺点
- dsLinq.Count() 引发了“System.NullReferenceException”类型的异常
- iOS开发之详解剪贴板
- 切入点表达式execution()
- Ubuntu18 给terminal改个漂亮的命令行提示符
- Manacher || P4555 [国家集训队]最长双回文串 || BZOJ 2565: 最长双回文串
- shell脚本中oldIFS=$IFS