solr6.0的solrJ接口有部分变化,下面列出了简单的使用实例,有需要的朋友可以参考下。

package com.ailk.solr6;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.UUID; //import org.apache.log4j.Logger;
//import org.apache.log4j.PropertyConfigurator;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.UpdateRequest;
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; public class SimpleSorl {
private String solrUrl;
private SolrClient client;
private int num = 10;
private String zkUrl;
private String collectionName; private SolrClient createNewSolrClient() {
try {
System.out.println("server address:" + solrUrl);
HttpSolrClient client = new HttpSolrClient(solrUrl);
client.setConnectionTimeout(30000);
client.setDefaultMaxConnectionsPerHost(100);
client.setMaxTotalConnections(100);
client.setSoTimeout(30000);
return client;
} catch (Exception ex) {
throw new RuntimeException(ex);
}
} private SolrClient createCouldSolrClient() {
CloudSolrClient client = new CloudSolrClient(zkUrl);
client.setZkClientTimeout(30000);
client.setZkConnectTimeout(50000);
client.setDefaultCollection(collectionName);
return client;
} public void close() {
try {
client.close();
} catch (IOException e) { e.printStackTrace();
}
} public SimpleSorl(String solrUrl, int num) {
this.solrUrl = solrUrl;
this.client = createNewSolrClient();
this.num = num;
} public SimpleSorl(String zkUrl, int num, String collection) {
this.zkUrl = zkUrl;
this.num = num;
collectionName = collection;
this.client = createCouldSolrClient();
} public void createDocs() {
System.out.println("======================add doc ===================");
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
for (int i = 1; i <= num; i++) {
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField("id", UUID.randomUUID().toString(), 1.0f);
doc1.addField("name", "bean");
doc1.addField("equIP_s", "192.168.2.104");
doc1.addField("level_s", "4");
doc1.addField("collectPro_s", "ffffffffffffffffffffjajajajajajdddddddddd");
doc1.addField("sourceType_s", "miaohqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
doc1.addField("filePath_s", "/home/xxxx/test");
doc1.addField("filename_s", "zhonggggmaiaiadadadddddddddddddddddddddddddd");// doc1.addField("_route_", "shard1");
docs.add(doc1);
}
try {
UpdateResponse rsp = client.add(docs);
System.out
.println("Add doc size" + docs.size() + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime()); UpdateResponse rspcommit = client.commit();
System.out.println("commit doc to index" + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime()); } catch (SolrServerException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public void queryDocs() {
SolrQuery params = new SolrQuery();
System.out.println("======================query===================");
params.set("q", "addparam_s:*");
params.set("start", 0);
params.set("rows", 5);
params.set("sort", "accesstime_s desc"); try {
QueryResponse rsp = client.query(params);
SolrDocumentList docs = rsp.getResults();
System.out.println("查询内容:" + params);
System.out.println("文档数量:" + docs.getNumFound());
System.out.println("查询花费时间:" + rsp.getQTime()); System.out.println("------query data:------");
for (SolrDocument doc : docs) {
// 多值查询
@SuppressWarnings("unchecked")
List<String> collectTime = (List<String>) doc.getFieldValue("collectTime");
String clientmac_s = (String) doc.getFieldValue("clientmac_s");
System.out.println("collectTime:" + collectTime + "\t clientmac_s:" + clientmac_s);
}
System.out.println("-----------------------");
} catch (Exception e) {
e.printStackTrace();
} } public void deleteById(String id) {
System.out.println("======================deleteById ===================");
try {
UpdateResponse rsp = client.deleteById(id);
client.commit();
System.out.println("delete id:" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
} catch (SolrServerException | IOException e) {
e.printStackTrace();
}
} public void deleteByQuery(String queryCon) {
System.out.println("======================deleteByQuery ===================");
UpdateResponse rsp; try {
UpdateRequest commit = new UpdateRequest();
commit.deleteByQuery(queryCon);
commit.setCommitWithin(5000);
commit.process(client);
System.out.println("url:"+commit.getPath()+"\t xml:"+commit.getXML()+" method:"+commit.getMethod());
// rsp = client.deleteByQuery(queryCon);
// client.commit();
// System.out.println("delete query:" + queryCon + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
} catch (SolrServerException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public void updateField(String id,String fieldName, Object fieldValue) {
System.out.println("======================updateField ===================");
HashMap<String, Object> oper = new HashMap<String, Object>();
// 多值更新方法
// List<String> mulitValues = new ArrayList<String>();
// mulitValues.add(fieldName);
// mulitValues.add((String)fieldValue);
oper.put("set", fieldValue); SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", id);
doc.addField(fieldName, oper);
try {
UpdateResponse rsp = client.add(doc);
System.out.println("update doc id" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
UpdateResponse rspCommit = client.commit();
System.out.println("commit doc to index" + " result:" + rspCommit.getStatus() + " Qtime:" + rspCommit.getQTime()); } catch (SolrServerException | IOException e) {
e.printStackTrace();
} } public static void main(String args[]) {
String url = "http://127.0.0.1:8983/solr/test201606";
String zkUrl = "127.0.0.1:9983";
// PropertyConfigurator.configure("./etc/log4j.properties");
SimpleSorl ss = new SimpleSorl(url, 2);
SimpleSorl sc = new SimpleSorl(zkUrl, 2, "test201607");
// 添加文档
sc.createDocs(); // 删除文档
// sc.deleteById("00cda454-bd3d-4945-814f-afa7110dcd21");
sc.deleteByQuery("name:bean"); //更新文档
sc.updateField("bd67564f-4939-4de1-9a83-3483ebbbbbee", "name", "1233313131313"); sc.close(); // 查询文档
ss.queryDocs();
ss.close(); } }

关于Solr6.0中solrj使用简单例子的更多相关文章

  1. Java中死锁的简单例子及其避免

    死锁:当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么它们将永远被阻塞.比如,线程1已经持有了A锁并想要获得B锁的同时,线程2持有B锁并尝试获取A锁,那么这两个线程将永远地等待下去. ...

  2. springboot 中使用websocket简单例子

    gradle 中添加依赖,引入websocket支持 compile("org.springframework.boot:spring-boot-starter-websocket:${sp ...

  3. Asp.Net Mvc5 结合 SignalR2.0+ 实现消息交互简单例子

    Nuget添加 SignalR包 1.构建一个MyHubServer服务端类 定义类的特性标签为 [HubName("chatHub")] public class MyHubSe ...

  4. Oracle中的存储过程简单例子

    --创建表create table TESTTABLE(  id1  VARCHAR2(12),  name VARCHAR2(32))select t.id1,t.name from TESTTAB ...

  5. Django2.0 正则表示匹配的简单例子

    在Django中,使用正则表达式,匹配Url 默认情况下,url固定格式如下: urlpatterns = [ path('admin/', admin.site.urls), ] 如果需要使用正则表 ...

  6. C# 中的正则简单例子

    public static void Main() { Regex rgx = new Regex(@"[S|s]et-[C|c]ookie: (?<cookieName>\w+ ...

  7. Visual C++ 6.0中if的简单用法

    # include<stdio.h> int main (void) { > ) printf("AAAA"); printf("BBBB") ...

  8. 转:solr6.0配置中文分词器IK Analyzer

    solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持s ...

  9. 我与solr(六)--solr6.0配置中文分词器IK Analyzer

    转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...

随机推荐

  1. EXCEL 列与列怎么交换?

    选中A列数据,按先SHIFT键的同时按住鼠标左键,向右拖动鼠标,在拖动的过程中,会出现一条虚线,当拖动到B列的右边缘时,屏幕上会出现 C:C 的提示,这时送开SHIFT键及鼠标左键,就完成了A B两列 ...

  2. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)

    一.简单介绍 Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...

  3. 〖Linux〗使用Qt5.2.0开发Android的NDK应用程序

    2013年12月11日,Qt发布了其新的Qt版本:Qt5.2.0: 利用这个新的版本,我们可以很轻松地制作出Android手机的NDK应用程序. 开发环境:Ubuntu13.10 x86_64 下载链 ...

  4. Androidmanifest.xml在Android项目中的作用

    以下是一个项目中的AndroidManifest.xml文件: <?xml version="1.0" encoding="utf-8"?> < ...

  5. 自研DCI网络路由交换协议DCIP-白牌交换机时代的企业网络

    一转眼从听华为3Com的路由交换课程到如今已经13年有余了,依稀记得第一节课的时候我带着老婆去听的课(老婆是日语系的.那时还是女朋友,并不懂网络,仅仅是跟着我去上课的).抢了个头排,讲师宋岩老师提问了 ...

  6. 判断是否为SIM卡联系人

    判断是否为SIM卡联系人 在AsyncQueryContacts类中. private List<TxrjAccount> accounts = new ArrayList<Txrj ...

  7. vim删除文件第n行到结尾、或某段内容

    1. 编辑文件 vim myShell.sh 2. 转到文件末尾 G 3. 或者转到删除内容最后的行 :set nu #显示行号,便于确定哪行 200G #光标定到200行,表示要删除n-200行的内 ...

  8. Java BigDecimal进行精确计算

    前言 float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以 ...

  9. PHP生成缩略图、加水印

    <?php class ThumbWaterImages{ /** * 生成缩略图/加水印 * classname ThumbWaterImages * datetime:2015-1-15 * ...

  10. xargs详解

    一.场景 这个命令是错误的 find ./ -perm +700 |ls -l 这样才是正确的 find ./ -perm +700 |xargs ls -l  二.用法 [root@localhos ...