熟練掌握ES Java API基于scroll實(shí)現(xiàn)月度銷售數(shù)據(jù)批量下載

比如說,現(xiàn)在要下載大批量的數(shù)據(jù),從es,放到excel中,我們說,月度,或者年度,銷售記錄,很多,比如幾千條,幾萬條,幾十萬條
其實(shí)就要用到我們之前講解的es scroll api,對(duì)大量數(shù)據(jù)批量的獲取和處理

PUT /car_shop/cars/4
{
    "brand": "寶馬",
    "name": "寶馬320",
    "price": 320000,
    "produce_date": "2017-01-01",
    "sale_price": 280000,
    "sale_date": "2017-01-25"
}

就是要看寶馬的銷售記錄
做一個(gè)演示,每個(gè)批次下載一條寶馬的銷售記錄,分幾個(gè)批次給它下載完

Settings settings = Settings.builder()
        .put("cluster.name", "my-application")
        .put("client.transport.sniff", true)
        .build();

TransportClient client = new PreBuiltTransportClient(settings).
        addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.80.188"), 9300));

SearchResponse searchResponse = client.prepareSearch("car_shop")
        .setTypes("cars")
        .setQuery(QueryBuilders.termQuery("brand", "寶馬"))
        .setScroll(new TimeValue(60000))
        .setSize(1)
        .get();

int batchCount = 0;

do {
    for (SearchHit searchHit : searchResponse.getHits().getHits()) {
        System.out.println("batch: " + ++batchCount);
        System.out.println(searchHit.getSourceAsString());
    }
    searchResponse = client.prepareSearchScroll(searchResponse.getScrollId())
            .setScroll(new TimeValue(60000))
            .execute().actionGet();
} while (searchResponse.getHits().getHits().length != 0);

client.close();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容