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 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
随机推荐
- H5 选择图片上传及预览
<div class="sctp"> <img src="img/sczp.png" id="photo" alt=&qu ...
- Flask基于websocket的简单聊天室
1.安装gevent-websocket pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ gevent-websocket 2.cha ...
- 基于vue+springboot+docker网站搭建【五】部署vue前端项目
部署vue前端项目 一.下载项目到本地 https://github.com/macrozheng/mall-admin-web 二.npm install 三.修改api配置,改为你接下来要部 ...
- Object.assign的使用
语法: Object.assign(target, ...sources)//target目标对象,sources源对象,返回值目标对象 使用说明: 如果目标对象中的属性具有相同的键,则属性将被源对象 ...
- TP5.1 调用common里面自定义的常量
公共文件:\application\common.php define('cms_password', cms); 控制器引用: 调用: $aa = cms_password; dump(cms_pa ...
- 如何在相同的类名中单独为选中元素设置JS
很多时候,我发现对一个类名添加事件,每次都是所有同类名元素一起触发,使用 this可以仅对当前选中的元素应用事件 如 $('.guowai button').click(function() { /* ...
- django 开发Broken pipe from ('127.0.0.1', 58078)问题解决
最近写的一个项目,前端使用了表单submit提交,后端接收POST数据存储.实际上的逻辑并不复杂, django接收到的时候会产生Broken pipe from ('127.0.0.1', 5807 ...
- SpringBoot配置MongoDB多数剧源
关闭Mongo的自动化配置 因为项目需要配置MongoDB多数据源. 为了避免Spring boot自动化配置带来的影响,因此通过注解屏蔽MongoDB的自动化配置. @SpringBootAppli ...
- 使用Fiddler监听java HttpURLConnection请求
使用Fiddler监听java HttpURLConnection请求
- lua使用ffi调用c程序的函数
参考: https://blog.csdn.net/weiwangchao_/article/details/16880401 http://luajit.org/ext_c_api.html h ...