您的位置:首页 > 其它

Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询

2017-05-19 16:20 267 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: