Solr7.x学习(7)-JAVA操作
maven依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.7.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
Person类
package com.zhi.test; import java.io.Serializable; import org.apache.solr.client.solrj.beans.Field; /**
* 人员信息
*
* @author zhi
* @time 2016年12月22日09:55:42
*
*/
@SuppressWarnings("serial")
public class Person implements Serializable {
/**
* 主键
*/
@Field
private String id;
/**
* 人员名称
*/
@Field
private String name;
/**
* 地址
*/
@Field
private String addr;
/**
* 年龄
*/
@Field
private Integer age; public Person() {
super();
} public Person(String id, String name, String addr, Integer age) {
super();
this.id = id;
this.name = name;
this.addr = addr;
this.age = age;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAddr() {
return addr;
} public void setAddr(String addr) {
this.addr = addr;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}
Datas类
package com.zhi.test; import java.util.ArrayList;
import java.util.List; public class Datas {
public static List<Person> getPersonData() throws Exception {
List<Person> list = new ArrayList<Person>();
list.add(new Person("01", "张三丰", "湖北省浠水县天虹大厦3楼", 100));
list.add(new Person("02", "张无忌", "湖北省武汉市中南路300号", 24));
list.add(new Person("03", "郭靖", "中华人民共和国", 36));
list.add(new Person("04", "黄蓉", "中国浙江", 17));
list.add(new Person("05", "杨过", "中国浙江杭州", 25));
list.add(new Person("06", "周伯通", "中国浙江杭州", 66));
list.add(new Person("07", "黄老邪", "中国浙江杭州", 54));
list.add(new Person("08", "欧阳锋", "湖北省黄石市杭州路900号", 52));
list.add(new Person("09", "木婉清", "湖北省武汉市陆军医院8楼", 19));
list.add(new Person("10", "萧峰", "湖北省武汉汉口解决大道33号", 31));
list.add(new Person("11", "扫地僧", "湖北省武汉市江夏大道99号", 99));
list.add(new Person("12", "丁春秋", "张家界", 43)); return list;
}
}
SolrTest类
package com.zhi.test; import java.util.List; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
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.junit.After;
import org.junit.Before;
import org.junit.Test; /**
* Solr客户端测试,需提前建好core
*
* @author zhi
* @since 2019年9月29日09:02:17
*
*/
public class SolrTest {
private Logger logger = LogManager.getLogger(this.getClass());
private SolrClient solrClient; @Before
public void init() {
solrClient = new HttpSolrClient.Builder("http://192.168.114.141:8983/solr/").build();
} @After
public void destroy() {
try {
solrClient.close();
} catch (Exception e) {
logger.error("关闭SolrClient出错", e);
}
} /**
* 添加一个Document,core中如果定义field,会自动创建对应的field
*/
@Test
public void addDoc() {
try {
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "1");
document.addField("name", "研发中心");
document.addField("remark", "苦逼集中营"); UpdateResponse response = solrClient.add("dept", document);
solrClient.commit("dept"); // 提交,让保存生效 logger.info("保存成功,返回的信息:{}", response.toString());
} catch (Exception e) {
logger.error("报错出错", e);
}
} /**
* 查询Document列表
*/
@Test
public void queryDoc() {
try {
SolrQuery query = new SolrQuery();
query.set("q", "name:研发"); QueryResponse response = solrClient.query("dept", query);
SolrDocumentList list = response.getResults();
logger.info("查询到的数据长度:{}", list.size());
for (SolrDocument doc : list) {
logger.info("id={},name={},remark={}", doc.get("id"), doc.get("name"), doc.get("remark"));
}
} catch (Exception e) {
logger.error("查询出错", e);
}
} /**
* 根据ID删除Document
*/
@Test
public void delDocById() {
try {
UpdateResponse response = solrClient.deleteById("dept", "1");
solrClient.commit("dept"); // 提交,让删除生效
logger.info("删除成功,返回信息:{}", response.toString());
} catch (Exception e) {
logger.error("删除出错", e);
}
} /**
* 添加对象列表,Bean对象至少有一个字段加上@Field注解。
* <li>有注解的会自动匹配core中的field(没有会自动生成field)
* <li>没注解的不会生成field,也不会保存(即使core中定义了该名称的field)
*/
@Test
public void addBeans() {
try {
UpdateResponse response = solrClient.addBeans("person", Datas.getPersonData());
solrClient.commit("person"); // 提交,让保存生效
logger.info("保存成功,返回消息:{}", response.toString());
} catch (Exception e) {
logger.error("保存出错", e);
}
} /**
* 查询Bean列表,分页查询,按id排序且只返回id、code、name3个字段
*/
@Test
public void queryBeans1() {
try {
SolrQuery query = new SolrQuery();
query.set("q", "*:*"); // 设置分页参数
query.setStart(0);
query.setRows(5); query.setFields("id", "name", "addr"); // 设置返回字段
query.setSort("id", SolrQuery.ORDER.asc); // 排序 QueryResponse response = solrClient.query("person", query);
List<Person> list = response.getBeans(Person.class);
logger.info("查询到的数据长度:{}", list.size());
for (Person person : list) {
logger.info("id={},name={},addr={}", person.getId(), person.getName(), person.getAddr());
}
} catch (Exception e) {
logger.error("查询出错", e);
}
} /**
* 查询Bean列表,addr包含 武汉,age范围15到25
*/
@Test
public void queryBeans2() {
try {
SolrQuery query = new SolrQuery();
query.set("q", "*:*"); query.addFilterQuery("age:[15 TO 25]"); // 年龄范围过滤
query.addFilterQuery("addr:武汉"); // 地址相似匹配 QueryResponse response = solrClient.query("person", query);
List<Person> list = response.getBeans(Person.class);
logger.info("查询到的数据长度:{}", list.size());
for (Person person : list) {
logger.info("id={},name={},addr={},age={}", person.getId(), person.getName(), person.getAddr(),
person.getAge());
}
} catch (Exception e) {
logger.error("查询出错", e);
}
} /**
* 查询Bean列表,关键字AND、OR必须大写。与queryBeans2结果一致,只是查询时机不一样
*/
@Test
public void queryBeans3() {
try {
SolrQuery query = new SolrQuery();
query.set("q", "age:[15 TO 25] AND addr:武汉"); QueryResponse response = solrClient.query("person", query);
List<Person> list = response.getBeans(Person.class);
logger.info("查询到的数据长度:{}", list.size());
for (Person person : list) {
logger.info("id={},name={},addr={}", person.getId(), person.getName(), person.getAddr());
}
} catch (Exception e) {
logger.error("查询出错", e);
}
}
}
Solr7.x学习(7)-JAVA操作的更多相关文章
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Elasticsearch学习之Java操作1
1. Elasticsearch为Java用户提供了两种内置客户端 1.1 节点客户端(node client): 节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不 ...
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- Es学习第十一课,使用java操作elasticsearch
前面十节课我们已经把ES的基本概念和使用讲的差不多了,现在我们就用基于java来实际开发一个操作ES的小项目,带大家来一起练练手. 1.我们用IDEA创建一个maven项目 项目结构如上图所示,然后我 ...
- java操作redis学习(一):安装及连接
文章参考自:http://www.cnblogs.com/edisonfeng/p/3571870.html,在此基础上进行了修改. 一.下载安装Redis redis官网显示暂时不支持Windows ...
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- 很值得学习的java 画图板源码
很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...
- Mongodb快速入门之使用Java操作Mongodb
[IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...
- Mongodb入门并使用java操作Mongodb
转载请注意出处:http://blog.csdn.net/zcm101 最近在学习NoSql,先从Mongodb入手,把最近学习的总结下. Mongodb下载安装 Mongodb的下载安装就不详细说了 ...
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
随机推荐
- 基于roslyn的动态编译库Natasha
人老了,玩不转博客园的编辑器,详细信息转到:https://mp.weixin.qq.com/s/1r6YKBkyovQSMUgfm_VxBg 关键字:Github, NCC, Natasha,Ros ...
- Huawei LiteOS简介
Huawei LiteOS简介 Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统.本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管 ...
- Macro的写法 `( , ,@ )
另外的注意点: 1. 同名符号的 “变量捕捉” (varible capture) 解决方式: with-gensym 生成几个unique name-s, 然后将它们各自绑定上参数值 2. 多次 ...
- Centos7 Putty SSH密钥登录
在本地电脑打开PuTTYgen程序,点击Generate生成密钥,可以再设置一层密码,保存公钥和私钥到本地文件,保存好,最好多处备份 先用密码登录远程Centos vim ~/.ssh/authori ...
- A - A Compatible Pair-biaobiao88
A - A Compatible Pair Nian is a monster which lives deep in the oceans. Once a year, it shows up on ...
- JS面向对象设计-创建对象
Object构造函数和对象字面量都可以用来创建单个对象,但是在创建多个对象时,会产生大量重复代码. 1.工厂模式 工厂模式抽象了创建具体对象的过程.由于ECMAScript无法创建类,我们用函数来封装 ...
- 【转载】Gradle学习 第十章:网络应用快速入门
转载地址:http://ask.android-studio.org/?/article/8 This chapter is a work in progress.这一章是一项正在进行中的工作. Th ...
- JSP JSTL
JSTL是Sun给JSP制定的一套标准标签库,JS代表JSP,TL即Tag Library. JSTL是一套很古老的标签库了,很多东西都不再适用,这里只介绍几个常用的标签. 使用JSTL需下载添加以下 ...
- fastadmin CMS等系列插件安装不成功的问题
由于fastadmin开发者 没有做到权限优化问题,导致用户在linux服务器上lnmp环境下安装的fastadmin后台安装插件一直产生权限不足,安装不成功的问题, 再次给大家一个具体解决办法 对 ...
- mysql 命令修复表
如果在断电.硬重启服务器等情况下,可能会造成有些表损坏,这时就需要修复 修复表前需要将mysql停止 centos7 用 systemctl stop mysqld.service 来停止 然后进入到 ...