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


    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;
        }
    }
  • 相关阅读:
    Linux内核之系统调用
    [转]Linux最多支持的SCSI Disk的数目
    bash一些技巧
    [转]Iptables 规则 一些简单实例和详细介绍
    近来工作和面试一些人的感受(原)
    自动给URL地址加上超链接
    在ASP.NET虚拟主机上实现URL重写(UrlRewrite)
    使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
    Fixing Twitter 提高世界上最流行的微博客系统性能和可扩展性(转)
    从优酷网学习SEO的标题(title)和关键字(keywords)如何选择
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6879040.html
Copyright © 2020-2023  润新知