2017-02-14 3 views
0

Я пытаюсь запустить массовый запрос через JEST и хочу добавить мои данные (скажем, «счета») по одному, а затем выполнить все сразу, однако, когда я запускаю следующий код на 10 счетах только последний счет выполняется, может ли кто-то исправить этот код, чтобы выполнить все 10 счетов (путем выполнения его вне цикла for, т. е. используя Bulk Request)?JEST Bulk Request Issue

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

Вам нужно построить Bulk Builder из цикла, а затем использовать его, чтобы добавить все счета:

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/(lambdas) способ сделать то же самое.

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