【问题标题】:JEST Bulk Request IssueJEST 批量请求问题
【发布时间】:2017-02-14 15:39:48
【问题描述】:

我正在尝试通过 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);

【问题讨论】:

    标签: java elasticsearch elasticsearch-jest


    【解决方案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());
    

    【讨论】:

      【解决方案2】:

      我知道这是一个老问题,但以防万一有人偶然发现这个问题,这里有一个 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());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多