ElastaticSearch -- es批量插入数据

es批量插入数据的示例

复制代码
    /**
     * 批量插入数据
     * @param client  es客户端
     * 如果没有现成的client, 获取client的代码以及jar包,详情见 https://www.cnblogs.com/expiator/p/15735701.html
     * @param list 对象集合
     * @param index  es索引
     * @param type es索引的类型
     */
    public static void bulkInsert(TransportClient client , List<Person> list, String index, String type) {
        //通过client实例化 BulkRequestBuilder
        BulkRequestBuilder bulkRequest = client.prepareBulk();
        for (Person person : list) {
            String dataStr = JSON.toJSONString(person);
            //最好能保证id唯一,可以拼上时间戳或者主键之类的
            StringBuilder id = new StringBuilder(person.getName()).append("_").append(person.getAge()).append("_").append(person.getAddress());
            //往BulkRequestBuilder中添加数据            
            bulkRequest.add(client.prepareIndex(index, type, id.toString()).setSource(dataStr, XContentType.JSON));
        }
        //执行请求并回调
        BulkResponse bulkItemResponses = bulkRequest.get();
        log.info("es插入是否成功:{}, 插入条数:{}", bulkItemResponses.status().toString(), CollectionUtils.size(list));
    }

es批量插入数据

上面的例子使用的是具体的对象集合 List。

对象集合可以转换成 List,再批量插入es,就能统一成通用的方法了。

复制代码
    /**
     * 批量插入数据
     * @param client  es客户端
     * 如果没有现成的client, 获取client的代码以及jar包,详情见 https://www.cnblogs.com/expiator/p/15735701.html 
     * @param list java对象集合转换而成的json集合
     * @param index  es索引
     * @param type es索引的类型
     * @param idField 插入数据对应的id字段
     */
    public static void bulkInsertJsonList(TransportClient client, List<JSONObject> list, String index, String type, String idField) {
        if (CollectionUtils.isEmpty(list)) {
            return;
        }
        long start = System.currentTimeMillis();
        BulkRequestBuilder bulkRequest = client.prepareBulk();
        for (JSONObject json : list) {
            //根据字段获取对应的id,最好能保证id唯一
            String id = json.getString(idField);
            bulkRequest.add(client.prepareIndex(index, type, id).setSource(json));
        }
        BulkResponse bulkItemResponses = bulkRequest.get();
        log.info("es插入是否成功:{}, 插入条数:{}, 插入耗时时长:{}ms"
                , bulkItemResponses.status().toString(), CollectionUtils.size(list), System.currentTimeMillis() - start);
    }
相关推荐
Flynn Liang2 小时前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库
Elastic 中国社区官方博客10 小时前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
Eloudy1 天前
Qwen2.5-14B-Instruct-AWQ 模型文件结构分析
大数据·elasticsearch·搜索引擎
YIN_尹1 天前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Elastic 中国社区官方博客1 天前
Elastic 在《Forrester Wave™:2026 年第四季度智能运维平台》报告中被评为强劲表现者
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
Elasticsearch1 天前
Elastic Cloud 无服务器服务审计日志:将审计记录发送到可观测性或安全解决方案
elasticsearch
zwjapple2 天前
skill总结
大数据·elasticsearch·搜索引擎
阿里云大数据AI技术2 天前
云栖实录|从代码上下文到千亿级文档:Qoder × 阿里云 Elasticsearch 落地生产级Agent向量检索
人工智能·elasticsearch
Elastic 中国社区官方博客2 天前
使用 OpenTelemetry 在 Elastic 中实现 Claude 平台的人工智能 agent 可观测性
大数据·运维·服务器·人工智能·elasticsearch·信息可视化·全文检索
Elastic 中国社区官方博客3 天前
Elastic 重大事件功能如何将 100 条日志样本转化为检测规则
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎