2

我正在尝试通过 JEST 运行批量请求,并希望一次附加我的数据(比如“账单”),然后一次执行,但是当我在 10 张账单上运行以下代码时,只有最后一张账单正在执行,有人可以更正此代码以执行所有 10 个账单(通过在 for 循环之外执行它,即使用批量请求)?

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

2 回答 2

4

您需要在循环之外构建 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());
于 2017-02-14T15:42:24.813 回答
1

我知道这是一个老问题,但以防万一有人偶然发现,这里有一个 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());
于 2018-02-12T12:58:58.060 回答