Elasticsearch教程(九) elasticsearch 查詢數據 | 分頁查詢

Elasticsearch  的查詢很靈活,而且有Filter,有分組功能,還有ScriptFilter等等,因此很強大。下面上代碼:java

一個簡單的查詢,返回一個List<對象> .。json

     /**
     * 根據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;
    }

 

下面我把我整個類貼出來。mybatis

 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;     } }
相關文章
相關標籤/搜索