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

Elasticsearch  的查询很灵活,并且有Filter,有分组功能,还有ScriptFilter等等,所以很强大。下面上代码:

一个简单的查询,返回一个List<对象> .。

 
  1. /**
  2. * 根据Id 查询 SOBangg
  3. * @param key
  4. * @return
  5. */
  6. public static List findSOBanggById(String id) {
  7.  
  8. Client client = ESTools.client;
  9. SearchResponse response = client.prepareSearch(MappingManager.INDEX)
  10. .setTypes(MappingManager.B_TYPE)
  11. .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
  12. .setQuery(QueryBuilders.termQuery("id",id)) // Query
  13. // .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter
  14. .setFrom(0).setSize(60).setExplain(true)
  15. .execute()
  16. .actionGet();
  17. SearchHits hits = response.getHits();
  18. List list = new ArrayList();
  19. for (SearchHit searchHit : hits) {
  20. Map source = searchHit.getSource();
  21. SOBangg entity = (SOBangg) JSONObject.toBean(JSONObject.fromObject(source) , SOBangg.class);
  22. list.add(entity);
  23. }
  24. return list;
  25. }

下面我把我整个类贴出来。

 
  1. package com.sojson.core.elasticsearch.manager;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import net.sf.json.JSONObject;
  8.  
  9. import org.elasticsearch.action.get.GetRequest;
  10. import org.elasticsearch.action.get.GetResponse;
  11. import org.elasticsearch.action.search.SearchRequestBuilder;
  12. import org.elasticsearch.action.search.SearchResponse;
  13. import org.elasticsearch.action.search.SearchType;
  14. import org.elasticsearch.client.Client;
  15. import org.elasticsearch.common.unit.TimeValue;
  16. import org.elasticsearch.index.query.QueryBuilder;
  17. import org.elasticsearch.index.query.QueryBuilders;
  18. import org.elasticsearch.search.SearchHit;
  19. import org.elasticsearch.search.SearchHits;
  20.  
  21. import com.sojson.common.model.SOBang;
  22. import com.sojson.common.model.SOBangg;
  23. import com.sojson.common.model.SOBanggKey;
  24. import com.sojson.core.elasticsearch.utils.ESTools;
  25. import com.sojson.core.mybatis.page.Pagination;
  26.  
  27. public class SelectManager {
  28.  
  29.  
  30. /**
  31. * 分页查询 SOBang
  32. * @param resultMap
  33. * @param pageSize
  34. * @param pageNo
  35. * @return
  36. */
  37. public static Pagination findByPage(Map resultMap,
  38. Integer pageSize,
  39. Integer pageNo){
  40. Pagination page = new Pagination();
  41. pageNo = null==pageNo?1:pageNo;
  42. page.setPageNo(pageNo);
  43. page.setPageSize(pageSize);
  44.  
  45.  
  46. Client client = ESTools.client;
  47. SearchRequestBuilder srb = client.prepareSearch(MappingManager.INDEX);
  48. srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
  49. srb.setTypes(MappingManager.TYPE);
  50. // srb.setQuery(resultMap);
  51. srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize)
  52. .setExplain(true);
  53.  
  54. SearchResponse response = srb.execute().actionGet();
  55. SearchHits hits = response.getHits();
  56.  
  57. page.setTotalCount((int)hits.getTotalHits());
  58. List list = new ArrayList();
  59. for (SearchHit searchHit : hits) {
  60. Map source = searchHit.getSource();
  61. SOBang entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(source)
  62. , SOBang.class);
  63. list.add(entity);
  64. }
  65. page.setList(list);
  66. return page;
  67.  
  68. }
  69. /**
  70. * 分页查询 SOBangg
  71. * @param resultMap
  72. * @param pageSize
  73. * @param pageNo
  74. * @return
  75. */
  76. public static Pagination findSOBanggByPage(Map resultMap,
  77. Integer pageSize,
  78. Integer pageNo){
  79. Pagination page = new Pagination();
  80. pageNo = null==pageNo?1:pageNo;
  81. page.setPageNo(pageNo);
  82. page.setPageSize(pageSize);
  83.  
  84.  
  85. Client client = ESTools.client;
  86. SearchRequestBuilder srb = client.prepareSearch(MappingManager.INDEX);
  87. srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
  88. srb.setTypes(MappingManager.B_TYPE);
  89.  
  90. srb.setQuery(QueryBuilders.termQuery("status",0));
  91. srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize)
  92. .setExplain(true);
  93.  
  94. SearchResponse response = srb.execute().actionGet();
  95. SearchHits hits = response.getHits();
  96.  
  97. page.setTotalCount((int)hits.getTotalHits());
  98. List list = new ArrayList();
  99. for (SearchHit searchHit : hits) {
  100. Map source = searchHit.getSource();
  101. SOBangg entity = (SOBangg) JSONObject
  102. .toBean(JSONObject.fromObject(source) , SOBangg.class);
  103. list.add(entity);
  104. }
  105. page.setList(list);
  106. return page;
  107.  
  108. }
  109. /**
  110. * 根据ID查询SOBang
  111. * @param id
  112. * @return
  113. */
  114. public static SOBang findSOBangById(String id){
  115. GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.TYPE, id);
  116. //GetResponse response = client.prepareGet(MappingManager.INDEX, MappingManager.TYPE, id);
  117. GetResponse response = ESTools.client.get(rq).actionGet();
  118. SOBang entity = null;
  119. //判断非空
  120. if(!response.isSourceEmpty()){
  121. Map data = response.getSource();
  122. entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(data)
  123. ,SOBang.class);
  124. }
  125. return entity;
  126. }
  127. /**
  128. * 根据Key 查询 SOBangg
  129. * @param key
  130. * @return
  131. */
  132. public static SOBangg findSOBanggByKey(SOBanggKey key) {
  133. String prefix = "%sx_x%s";
  134. String id = String.format(prefix, key.getId(),key.getGid());
  135. GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.B_TYPE, id);
  136. //GetResponse response = client.prepareGet(MappingManager.INDEX, MappingManager.TYPE, id);
  137. GetResponse response = ESTools.client.get(rq).actionGet();
  138. SOBangg entity = null;
  139. //判断非空
  140. if(!response.isSourceEmpty()){
  141. Map data = response.getSource();
  142. entity = (SOBangg)JSONObject.toBean(JSONObject.fromObject(data)
  143. ,SOBangg.class);
  144. }
  145. return entity;
  146. }
  147. /**
  148. * 根据Id 查询 SOBangg
  149. * @param key
  150. * @return
  151. */
  152. public static List findSOBanggById(String id) {
  153.  
  154. Client client = ESTools.client;
  155. SearchResponse response = client.prepareSearch(MappingManager.INDEX)
  156. .setTypes(MappingManager.B_TYPE)
  157. .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
  158. .setQuery(QueryBuilders.termQuery("id",id)) // Query
  159. // .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter
  160. .setFrom(0).setSize(60).setExplain(true)
  161. .execute()
  162. .actionGet();
  163. SearchHits hits = response.getHits();
  164. List list = new ArrayList();
  165. for (SearchHit searchHit : hits) {
  166. Map source = searchHit.getSource();
  167. SOBangg entity = (SOBangg) JSONObject.toBean(JSONObject.fromObject(source)
  168. , SOBangg.class);
  169. list.add(entity);
  170. }
  171. return list;
  172. }
  173.  
  174.  
  175.  
  176. public static BangDetailsBo findById(String id) {
  177. BangDetailsBo result = new BangDetailsBo();
  178. GetRequest rq = new GetRequest(MappingManager.INDEX, MappingManager.TYPE, id);
  179.  
  180. GetResponse response = ESTools.client.get(rq).actionGet();
  181. //判断非空
  182. if(!response.isSourceEmpty()){
  183. Map data = response.getSource();
  184. SOBang entity = (SOBang)JSONObject.toBean(JSONObject.fromObject(data)
  185. ,SOBang.class);
  186. result.setEntity(entity);
  187. }
  188.  
  189. return result;
  190. }
  191. }


自己鼓捣鼓捣吧,有问题加群问我,Pagination对象我没公开,这个是系统里的,和这个查询没关系,你可以替换成你的Page对象即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值