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;
    }
}

Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询的更多相关文章

  1. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  2. Oracle、MySql、SQLServer 数据分页查询

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  3. [.NET] SQL数据分页查询

    [.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...

  4. 转Oracle、MySql、SQLServer 数据分页查询

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  5. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  7. MySQL——优化嵌套查询和分页查询

    优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...

  8. SQL语句or查询,union all查询,分页查询,分组,AND查询

    一.OR查询 1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用 2.如果or条件两边的筛选条件 ...

  9. Linq高级查询,分页查询及查询分页结合

    一.高级查询与分页查询 1.以...开头    StartsWith Repeater1.DataSource=con.Users.Where(r=>r.Nickname.StartsWith( ...

随机推荐

  1. 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  2. 3.2 Lucene实战:一个简单的小程序

    在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...

  3. Debian中文字体安装

    默认装的英文办的debian7,看中国字不太美,这好办照着做吧 1. Setup locales #dpkg-reconfigure locales 选择 zh_CN GB2312 zh_CN.GBK ...

  4. Topcoder SRM548 Div 1

    1. KingdomAndTrees 给出n个数a[1..n],求一个数组b[1..n]满足b严格递增,且b[1]>=1. 定义代价为W = max{abs(a[i]-b[i])},求代价最小值 ...

  5. LVDS 数据通道详解 单8 单6

    1.1.1           LVDS接口分类 1.1.1.1              单路6bit LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此 ...

  6. Vue全局异常捕获

    之前没注意过这么个小技巧 , 可能在Vue文档里也有  暂时先记下了 方便摘要 Vue全局配置 errorHandler可以进行全局错误收集,我们可以根据这个特性对前端异常做这样的处理:业务错误直接写 ...

  7. Centos 多线程下载工具-axel

    32位CentOS执行下面命令: wget -c http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.i386.rpm rpm -ivh axel-2.4 ...

  8. 【原创】SQL Server Job邮件详细配置

    1 简介 SQL Server 代理具有发送电子邮件的功能.您可以配置 SQL Server 代理邮件,使其在出现下列情况时向预定义的操作员发送电子邮件: 警报触发时.可以配置警报,以针对所发生的特定 ...

  9. JavaScript 开发者的 10 款必备工具

    JavaScript,一种所有主流浏览器都支持的语言,是开发基于浏览器的 Web 应用程序的主力,几乎每年都会受到来自众多开发人员的关注.自然地,框架和库的生态系统自然而然地围绕着 JavaScrip ...

  10. ZOJ 3940 Modulo Query (2016年浙江省赛E题,区间折叠 + map运用)

    题目链接  2016 ZJCPC Problem E 考虑一个开区间$[0, x)$对$a_{i}$取模的过程. $[0, x)$中小于$a_{i}$的部分不变,大于等于$a_{i}$的部分被切下来变 ...