zoukankan      html  css  js  c++  java
  • elasticsearch7.4.2 使用java API导出全量数据到文件

    pom.xml:

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>7.4.2</version>
    </dependency>

    java代码:

    public static boolean getEs(String beginDate, String endDate) throws IOException {
            RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.100.100", 9201, "http")));
            //设定滚动时间间隔
            final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
            SearchRequest searchRequest = new SearchRequest("index");//索引库
            searchRequest.types("type");//索引表
            searchRequest.scroll(scroll);
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            //设定每次返回多少条数据
            searchSourceBuilder.size(pageNum);
            //返回字段信息
            searchSourceBuilder.fetchSource(new String[]{"id", "x_dip","i_dport"}, new String[]{});
    
            //x_begintime 字段范围值过滤
            RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("x_begintime");
            rangeQueryBuilder.gte(beginDate);//开始时间
            rangeQueryBuilder.lte(endDate);//结束时间
            BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
            boolBuilder.must(rangeQueryBuilder);
            searchSourceBuilder.query(boolBuilder);
            searchRequest.source(searchSourceBuilder);
    
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            String scrollId = searchResponse.getScrollId();
            SearchHit[] searchHits = searchResponse.getHits().getHits();
            //把导出的结果以JSON的格式写到文件里,filePath=写入文件路径
            BufferedWriter out = new BufferedWriter(new FileWriter(filePath, true));
            
            System.out.println("-----"+searchHits.length+"-----");
            for (SearchHit searchHit : searchHits) {
                String json = searchHit.getSourceAsString();
                System.out.println(json);
                out.write(json);
                out.write("
    ");
            }
            //遍历搜索命中的数据,直到没有数据
            while (searchHits != null && searchHits.length > 0) {
                SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
                scrollRequest.scroll(scroll);
                searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
                scrollId = searchResponse.getScrollId();
                searchHits = searchResponse.getHits().getHits();
                if (searchHits != null && searchHits.length > 0) {
                    System.out.println("-----"+searchHits.length+"-----");
                    for (SearchHit searchHit : searchHits) {
                        String json = searchHit.getSourceAsString();
                        System.out.println(json);
                        out.write(json);
                        out.write("
    ");
                    }
                }
            }
    
            //清除滚屏
            ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
            //也可以选择setScrollIds()将多个scrollId一起使用
            clearScrollRequest.addScrollId(scrollId);
            ClearScrollResponse clearScrollResponse = null;
            try {
                clearScrollResponse = client.clearScroll(clearScrollRequest,RequestOptions.DEFAULT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            boolean succeeded = clearScrollResponse.isSucceeded();
            if(succeeded){
                System.out.println(filePath);
            }
            out.close();
            client.close();
            //成功返回true
            return succeeded;
        }
  • 相关阅读:
    [Hyper-V]使用操作系统模板创建新的虚拟机
    [Hyper-V]给Hyper-V创建两块网卡备用
    [Hyper-V]在Windows 8.1 操作系统中启用Hyper-V功能
    [MSSQL]SCOPE_IDENTITY,IDENT_CURRENT以及@@IDENTITY的区别
    [Microsoft Test Manager]CodeUI初探
    [MSSQL] Useful SQL Scripts
    Run Android on Your Netbook or Desktop
    How Delete File with Readonly Permission?
    Getting the first day in a week with T-SQL
    [HtmlUnit]Fetch Dynamic Html/Content Created By Javascript/Ajax
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/12854757.html
Copyright © 2011-2022 走看看