2017-02-14 95 views
0

我正試圖通過JEST運行批量請求,並希望一次一個追加我的數據(說「賬單」),然後一次執行所有操作,但是當我在10個賬單上運行以下代碼只是最後一張賬單正在執行,是否有人可以更正此代碼以執行所有10個賬單(通過在for循環之外執行,即使用批量請求)?JEST批量請求問題

for(JSONObject bill : bills) {   
       bulkRequest = new Bulk.Builder() 
       .addAction(new Index.Builder(bill.toString()).index(index).type(type).id(id).build()) 
       .build(); 
       } 

     bulkResponse = Client.execute(bulkRequest); 

回答

1

你需要建立批量生成器退出循環,然後用它來添加所有的賬單:

bulkRequest = new Bulk.Builder() 
for(JSONObject bill : bills) {   
     bulkRequest.addAction(new Index.Builder(bill.toString()).index(index).type(type).id(id).build()) 
}  
bulkResponse = Client.execute(bulkRequest.build()); 
0

我知道這是一個老問題,但以防萬一有人碰到這個失蹄,這裏是一個java 8 /(lambda)做同樣的事情的方式。

Client.execute(new Bulk.Builder() 
         .addAction(
          bills.stream() 
          .map(bill -> 
           new Index.Builder(bill.toString() 
          ) 
          .index(index).type(type).id(id).build()) 
          .collect(Collectors.toList()) 
         ).build());