2017-02-14 82 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());