ElasticSearch-分页查询

来源:互联网 发布:品茗软件怎么用 编辑:程序博客网 时间:2024/05/18 21:42

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

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


原创粉丝点击