elasticsearch 查询数据 | 分页查询
2018-01-11 16:16
501 查看
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
// .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;
}
下面我把我整个类贴出来。
package com.sojson.core.elasticsearch.manager;
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 6.x 的分页查询数据
- [转]oracle的数据分页查询
- 数据查询分页显示的优化方法
- ASP.NET查询分页技术:实现Web数据分页浏览
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- struts2+spring+mybatis datagrid 分页,查询,数据回显等详解
- 从后台一次查询所有数据,在前端用js进行分页处理,不再次走数据库
- java redis 分页查询数据
- 如何对分库后的数据进行分页查询?
- Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash
- ASP.NET查询分页技术:实现Web数据分页浏览
- SQL Server 2012使用Offset/Fetch Next实现分页数据查询
- 一个共通的viewModel搞定所有的分页查询一览及数据导出(easyui + knockoutjs + mvc4.0)
- MySQL limit 分页查询优化(数据量非常大的情况)
- 数据查询分页代码
- sql server 大数据表分页查询
- mybatis分页多条件查询指定时间段数据的sql语句
- Elasticsearch学习记录(1.安装,简单的查询,聚合,防止数据重复,冲突控制等)
- elasticsearch核心知识--46.scroll技术滚动搜索大量数据以及和FromSize分页的本质区别和性能
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案!(zz)