Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
Elasticsearch 的查询很灵活,并且有Filter,有分组功能,还有ScriptFilter等等,所以很强大。下面上代码:
一个简单的查询,返回一个List<对象> .。
* 根据Id 查询 SOBangg
* @param key
* @return
*/
public static List findSOBanggById(String id) {
Client client = ESTools.client;
SearchResponse response = client.prepareSearch(MappingManager.INDEX)
.setTypes(MappingManager.B_TYPE)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("id",id)) // Query
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();
SearchHits hits = response.getHits();
List list = new ArrayList();
for (SearchHit searchHit : hits) {
Map source = searchHit.getSource();
SOBangg entity = (SOBangg) JSONObject.toBean(JSONObject.fromObject(source) , SOBangg.class);
list.add(entity);
}
return list;
}
下面我把我整个类贴出来。
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import com.sojson.common.model.SOBang;
import com.sojson.common.model.SOBangg;
import com.sojson.common.model.SOBanggKey;
import com.sojson.core.elasticsearch.utils.ESTools;
import com.sojson.core.mybatis.page.Pagination;
public class SelectManager {
/**
* 分页查询 SOBang
* @param resultMap
* @param pageSize
* @param pageNo
* @return
*/
public static Pagination findByPage(Map resultMap,
Integer pageSize,
Integer pageNo){
Pagination page = new Pagination();
pageNo = null==pageNo?1:pageNo;
page.setPageNo(pageNo);
page.setPageSize(pageSize);
Client client = ESTools.client;
SearchRequestBuilder srb = client.prepareSearch(MappingManager.INDEX);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
srb.setTypes(MappingManager.TYPE);
// srb.setQuery(resultMap);
srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize)
.setExplain(true);
SearchResponse response = srb.execute().actionGet();
SearchHits hits = response.getHits();
page.setTotalCount((int)hits.getTotalHits());
List list = new ArrayList();
for (SearchHit searchHit : hits) {
Map source = searchHit.getSource();
SOBang entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(source)
, SOBang.class);
list.add(entity);
}
page.setList(list);
return page;
}
/**
* 分页查询 SOBangg
* @param resultMap
* @param pageSize
* @param pageNo
* @return
*/
public static Pagination findSOBanggByPage(Map resultMap,
Integer pageSize,
Integer pageNo){
Pagination page = new Pagination();
pageNo = null==pageNo?1:pageNo;
page.setPageNo(pageNo);
page.setPageSize(pageSize);
Client client = ESTools.client;
SearchRequestBuilder srb = client.prepareSearch(MappingManager.INDEX);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
srb.setTypes(MappingManager.B_TYPE);
srb.setQuery(QueryBuilders.termQuery("status",0));
srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize)
.setExplain(true);
SearchResponse response = srb.execute().actionGet();
SearchHits hits = response.getHits();
page.setTotalCount((int)hits.getTotalHits());
List list = new ArrayList();
for (SearchHit searchHit : hits) {
Map source = searchHit.getSource();
SOBangg entity = (SOBangg) JSONObject
.toBean(JSONObject.fromObject(source) , SOBangg.class);
list.add(entity);
}
page.setList(list);
return page;
}
/**
* 根据ID查询SOBang
* @param id
* @return
*/
public static SOBang findSOBangById(String id){
GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.TYPE, id);
//GetResponse response = client.prepareGet(MappingManager.INDEX, MappingManager.TYPE, id);
GetResponse response = ESTools.client.get(rq).actionGet();
SOBang entity = null;
//判断非空
if(!response.isSourceEmpty()){
Map data = response.getSource();
entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(data)
,SOBang.class);
}
return entity;
}
/**
* 根据Key 查询 SOBangg
* @param key
* @return
*/
public static SOBangg findSOBanggByKey(SOBanggKey key) {
String prefix = "%sx_x%s";
String id = String.format(prefix, key.getId(),key.getGid());
GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.B_TYPE, id);
//GetResponse response = client.prepareGet(MappingManager.INDEX, MappingManager.TYPE, id);
GetResponse response = ESTools.client.get(rq).actionGet();
SOBangg entity = null;
//判断非空
if(!response.isSourceEmpty()){
Map data = response.getSource();
entity = (SOBangg)JSONObject.toBean(JSONObject.fromObject(data)
,SOBangg.class);
}
return entity;
}
/**
* 根据Id 查询 SOBangg
* @param key
* @return
*/
public static List findSOBanggById(String id) {
Client client = ESTools.client;
SearchResponse response = client.prepareSearch(MappingManager.INDEX)
.setTypes(MappingManager.B_TYPE)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("id",id)) // Query
// .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();
SearchHits hits = response.getHits();
List list = new ArrayList();
for (SearchHit searchHit : hits) {
Map source = searchHit.getSource();
SOBangg entity = (SOBangg) JSONObject.toBean(JSONObject.fromObject(source)
, SOBangg.class);
list.add(entity);
}
return list;
}
public static BangDetailsBo findById(String id) {
BangDetailsBo result = new BangDetailsBo();
GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.TYPE, id);
GetResponse response = ESTools.client.get(rq).actionGet();
//判断非空
if(!response.isSourceEmpty()){
Map data = response.getSource();
SOBang entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(data)
,SOBang.class);
result.setEntity(entity);
}
return result;
}
}
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询的更多相关文章
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
- Oracle、MySql、SQLServer 数据分页查询
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- [.NET] SQL数据分页查询
[.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...
- 转Oracle、MySql、SQLServer 数据分页查询
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程
SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...
- MySQL——优化嵌套查询和分页查询
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...
- SQL语句or查询,union all查询,分页查询,分组,AND查询
一.OR查询 1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用 2.如果or条件两边的筛选条件 ...
- Linq高级查询,分页查询及查询分页结合
一.高级查询与分页查询 1.以...开头 StartsWith Repeater1.DataSource=con.Users.Where(r=>r.Nickname.StartsWith( ...
随机推荐
- Codeforces Round #527 (Div. 3) ABCDEF题解
Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...
- vs2008升级正式版
1.VS2008简体中文正式版序列号 1.Visual Studio 2008 Professional Edition: XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT 2.Visual ...
- canvas2D 基础知识 浅析
1.canvas HTML5给出的一个可以展示绘图内容的标签 使用领域: (推荐网站:threejs.org) 1. 游戏 2. 可视化数据 3. Banner广告 4. 多媒体 (1)在 c ...
- Hibernate中多种方式解除延迟加载
问题引发:因为dao使用load(),默认延迟加载的,当在biz关闭session之后,UI层无法获取对象的非id属性值 解决方案: 1.变成get,即时加载 2.用Hibernate.isIniti ...
- [bzoj1051][HAOI2006]受欢迎的牛——强连通分量
题目大意: 给定一个有向图,求能够被其他所有点访问到的点的个数. 题解: 首先,这个题我在洛谷上AC了,但是bzoj上WA,不知道为什么. 说一下解法. 首先,我们进行scc分解,可以知道, 如果一个 ...
- mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)
这配置已经优化的不错了,如果你的mysql没有什么特殊情况的话,可以直接使用该配置参数 MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = ...
- windows实时监测热插拔设备的变化(转)
原文转自 https://blog.csdn.net/windows_nt/article/details/13614849 序: 在21世纪,这个信息时代,热插拔设备是一个巨大的安全隐患.在这个篇文 ...
- commons-lang3中DateUtils类方法介绍
添加commons-lang3的Maven依赖 <dependency> <groupId>org.apache.commons</groupId> <art ...
- ECShop安装实录
版本: ecmoban_V2.7.3_UTF8_20150623 来源: 官网 一. 给 C:\Windows\temp目录增加 IIS_Users 完全权限. 二. 安装报错: Warning: d ...
- Express定制参数解析错误响应值
Nodejs的Express框架本身所提供的东西并没有其它框架那么多.其中的一个问题就是对于请求数据的解析. express中的请求对象并没有未经过解析的请求体,几乎所有的请求体都要经过类似于body ...