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. Navicat如何直接修改表中数据?

    Navicat如何直接修改表中数据?

  2. python之函数用法locals()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法locals() #locals() #说明:查找局部变量,返回一个名字/值对的字典对 ...

  3. Android 5.0 + IDA 6.8 调试经验分享

    如今升级快.网上的资料仅仅能做參考. 学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了非常久,这里分享一下我的经验. 工具: IDA pro 6.8 Android 5.x IDA ...

  4. TCP/IP协议栈--IP首部选项字段的分析

    IP输入函数(ipintr)将在验证分组格式(检验和,长度等)之后.确定分组是否到达目的地之前,对选项进行处理. 这表明分组所 遇到的每一个路由器以及终于的目的主机都对要分组的选项进行处理. IP分组 ...

  5. Spring +Mybatis 企业应用实战(脑图)

  6. 深入了解PHP闭包的使用以及实现

    一.介绍 匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用 ...

  7. Object-c中block需要注意的几点问题

    1. Block定义 1) 说明: a. Block是OC中的一种数据类型,在iOS开发中被广泛使用 b. ^是Block的特有标记 c. Block的实现代码包含在{}之间 d. 大多情况下,以内联 ...

  8. Python Socket编程初探

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

  9. 学会快速装系统 图解硬盘分区软件Norton Ghost使用

    http://edu.itbulo.com/200909/126313_5.htm即使你拥有最先进的电脑,采用传统的方法,Windows的安装速度仍然是令人头痛的!有没有什么重装系统的简便方法呢?当然 ...

  10. C# MediaPlayer的详细用法

    AxWindowsMediaPlayer的详细用法 作者:龙昊雪 AxWindowsMediaPlayer的详细用法收藏 function StorePage(){d=document;t=d.sel ...