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

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

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

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

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

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


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

猜你喜欢

转载自blog.csdn.net/superviser3000/article/details/80856479