JEST 批量请求问题
JEST Bulk Request Issue
我正在尝试通过 JEST 运行 批量请求并希望一次附加我的数据(比如 "bills")然后一次执行所有数据,但是当我 运行 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);
您需要在循环外构建 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());
我知道这是一个老问题,但为了防止有人偶然发现这个问题,这里有一个 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());
我正在尝试通过 JEST 运行 批量请求并希望一次附加我的数据(比如 "bills")然后一次执行所有数据,但是当我 运行 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);
您需要在循环外构建 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());
我知道这是一个老问题,但为了防止有人偶然发现这个问题,这里有一个 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());