JEST批量请求问题

时间:2017-02-14 15:39:49

标签: java elasticsearch jest

我正在尝试通过JEST运行批量请求,并且想要一次添加一个数据(比如说#34; bill"),然后一次执行所有数据,但是当我在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);

2 个答案:

答案 0 :(得分:4)

您需要在循环中构建批量生成器,然后使用它来添加所有帐单:

if (count($request->all())) {
  // foreach here.
}

答案 1 :(得分: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());