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( ...
随机推荐
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(3)——AMD显卡简介
早期的显卡仅用于显示,后来显卡中加入了2D加速部件,这些部件用于做拷屏,画点,画线等操作.随着游戏.三维模拟以及科学计算可视化等需要,对3D的需求逐渐增加,早期图形绘制工作由CPU来完成,要达到真实感 ...
- Flask-Migrate拓展数据库表结构
# 转载请留言联系 在我们用 sqlchemy 模块创建完几个表时,如果在实际生产环境中,需要对表结构进行更改,应该怎么办呢?总不能把表删除了吧,这样数据就会丢失了. 更好的解决办法是使用数据库迁移框 ...
- 在vc6里头文件sys/timeb.h里struct timeb各变量的具体含义?
timeb的定义:struct _timeb{ time_t time; unsigned short millitm; short timezon ...
- (4)C#变量,常量,数据类型,转义字符,数据类型转换
一.变量 程序运行期间能够被改变的量称为变量. 变量名称要用小写字母开头,避免用下划线开头. 如果包含多个单词,从第二个单词开始首字母都要大写. 定义并初始化 double pi = 3.14 二.常 ...
- Codeforces Round #191 (Div. 2) A. Flipping Game【*枚举/DP/每次操作可将区间[i,j](1=<i<=j<=n)内牌的状态翻转(即0变1,1变0),求一次翻转操作后,1的个数尽量多】
A. Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard ...
- apache和tomcat群集
httpd.conf httpd.conf中添加: #与tomcat的插件 include "D:\clusterServer\apache\conf\mod_jk.con ...
- (转)Limboy:自学 iOS 开发的一些经验
不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃.啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了, ...
- luogu P1226 取余运算||快速幂
题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 输入输 ...
- 数值计算方法 | C语言实现几个数值计算方法(实验报告版)
目录 写在前面 实验一 牛顿插值方法的实现 实验二 龙贝格求积算法的实现 实验三 高斯列主元消去法的实现 实验四 最小二乘方法的实现 写在前面 使用教材:<数值计算方法>黄云清等编著 科学 ...
- Node应用的Systemd启动(转)
作者: 阮一峰 日期: 2016年3月12日 前面的文章介绍了 Systemd 的操作命令和基本用法,今天给出一个实例,如何使用 Systemd 启动一个 Node 应用. 本文是独立的,不需要前面的 ...