elasticsearch批量插入api

es简单使用 

@Autowired
private ElasticsearchTemplate es;

private void dealData2Map4Save(List<POJO> ls) {
        Consumer<BulkRequestBuilder> consumer = bulkRequestBuilder -> {

            ls.stream().forEach(detail -> {
                Map<String,Object> map = new HashMap<>();
                map.put("id",detail.getEbId());
                map.put("parent_id",detail.getEbParentId());
                map.put("param",detail.getRequestPar());
                map.put("uniq_id",detail.getBrowserUniqId());
                map.put("user_pin",detail.getUserLogAcct());
                map.put("create_time", DateFormatUtils.format(detail.getCreateTime()));
                map.put("update_time",DateFormatUtils.format(detail.getUpdateTime()));

                bulkRequestBuilder.add(
                        es.getClient().prepareIndex(INDEX, TYPE).setSource(map));
            });
        };
        BulkRequestBuilder bulkRequestBuilder = es.getClient().prepareBulk();

        consumer.accept(bulkRequestBuilder);

        BulkResponse bulkResponse = bulkRequestBuilder.execute().actionGet();

        if (bulkResponse.hasFailures()) {
            throw new RuntimeException(bulkResponse.buildFailureMessage());
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 6.5.4 中,可以使用 Java API 批量插入数据。下面是一个示例代码: ```java import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.rest.RestStatus; import java.io.IOException; import java.util.List; public class ElasticsearchBulkInsert { private static final String INDEX_NAME = "my_index"; private static final String TYPE_NAME = "_doc"; public static void bulkInsert(RestHighLevelClient client, List<String> documents) throws IOException { BulkRequest bulkRequest = new BulkRequest(); for (String document : documents) { IndexRequest indexRequest = new IndexRequest(INDEX_NAME, TYPE_NAME); indexRequest.source(document, XContentType.JSON); bulkRequest.add(indexRequest); } try { BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); if (bulkResponse.hasFailures()) { // 处理错误 for (BulkItemResponse bulkItemResponse : bulkResponse) { if (bulkItemResponse.isFailed()) { BulkItemResponse.Failure failure = bulkItemResponse.getFailure(); String id = bulkItemResponse.getId(); String message = failure.getMessage(); RestStatus status = failure.getStatus(); // 处理错误 } } } } catch (IndexNotFoundException e) { // 处理索引不存在异常 } } } ``` 在上面的代码中,我们首先创建了一个 `BulkRequest` 对象,然后循环要插入的文档,将每个文档构造成一个 `IndexRequest` 对象,并调用 `bulkRequest.add()` 方法将其添加到 `BulkRequest` 中。最后,调用 `client.bulk()` 方法执行批量插入操作。 要注意的是,如果批量插入过程中出现错误,可以通过检查 `BulkResponse` 对象中的 `hasFailures()` 方法来判断是否存在错误。如果存在错误,可以通过遍历 `BulkItemResponse` 对象来处理每个文档的错误信息。如果在批量插入时发现索引不存在,可以捕获 `IndexNotFoundException` 异常并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值