ElasticSearch-分页查询

获取客户端方式 请看前面文章 分页查询代码

    public static void perPage() {
        //scroll里面的size是相对于每个分片来说的,所以实际返回的数量是:分片的数量*size
        TransportClient client = ElasticSearchUtil.getInstance().getEsClient(); 
        BoolQueryBuilder b = QueryBuilders.boolQuery()
//                .must(QueryBuilders.matchQuery("alarmName","恶意"))
//                .must(QueryBuilders.matchQuery("alarmName","文件"))
//                .must(QueryBuilders.termsQuery("alarmName", new String[] {"访问"}))
                .must(QueryBuilders.matchQuery("ip1", "192.168.5.18"))
//                .must(QueryBuilders.rangeQuery("time").from(1490926962223.0).to(1490926965000.0))
                .must(QueryBuilders.termsQuery("level", new int[] {1,3,4}));  
        
        SearchResponse actionGet = client.prepareSearch("soc1")
                .setTypes("t_event").setSearchType(SearchType.SCAN)
                .setQuery(b).setSize(100)//这个游标维持多长时间  
                .setScroll(TimeValue.timeValueMinutes(1))  
                .execute().actionGet();
        //一共多少条
        long count = actionGet.getHits().getTotalHits();
               
        for(int i=0,sum=0; sum<count; i++){
            SearchResponse  scrollResponse = client.prepareSearchScroll(actionGet.getScrollId()).setScroll(TimeValue.timeValueMinutes(1))  
            .execute().actionGet();
            for (SearchHit hit : scrollResponse.getHits())
            { //getHits 的使用         
              System.out.println(hit.getSourceAsString());//这样可以获得属性的值
            }
            sum += scrollResponse.getHits().hits().length;
            System.out.println("总量"+count+" 已经查到"+sum);
        }
        
        ElasticSearchUtil.getInstance().close(client);
        System.out.println("count:"+count);
        
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值