java批量添加数据到elasticsearch

ship对象类

复制代码
public class Ship {
    private String mmsi;
    private String utc;
   


    public String getMmsi() {
        return mmsi;
    }

    public void setMmsi(String mmsi) {
        this.mmsi = mmsi;
    }

    public String getUtc() {
        return utc;
    }

    public void setUtc(String utc) {
        this.utc = utc;
    }
}
复制代码

批量添加

复制代码
public static void insertAllBulk(List<Ship> dataList,String indexName) {
        TransportClient client = null;
        try {
            client = connectionPool.getConnection();
            BulkRequestBuilder builder = client.prepareBulk();
            //请求命令数量
            int z = 0;
            long l2 = System.currentTimeMillis();
            int n = dataList.size();
            if (n != 0) {
                //遍历列表,每条数据生成一条请求命令
                for (int i = 0; i < n; i++) {
                    Ship data = dataList.remove(0);
                    if (data != null) {
                        String utc = data.getUtc();
                        if (utc == null || utc.equals("")) {
                            continue;
                        } else {
                            IndexRequestBuilder request = client.prepareIndex(indexName, "_doc").setSource(
                                    XContentFactory.jsonBuilder()
                                            .startObject()
                                            .field("mmsi", data.getMmsi())
                                            .field("utc", utc)
                                            .endObject()
                            );
                            //添加到批量请求
                            builder.add(request);
                            z++;
                        }
                    }
                }
                //命令数不为零
                if (z != 0) {
                    long l3 = System.currentTimeMillis();
                    logger2.info("生成请求耗时:" + (l3 - l2));
                    //执行批量请求,获取结果
                    BulkResponse bulkItemResponses = builder.get();
                    if (bulkItemResponses.hasFailures()) {
                        logger2.error(bulkItemResponses.buildFailureMessage());
                    }
                    long l4 = System.currentTimeMillis();
                    logger2.info("执行并返回结果耗时:" + (l4 - l3));
                    long millis = bulkItemResponses.getTook().getMillis();
                    dataList.clear();
                    logger2.info("船完成批量导入ES" + n + "个,耗时" + millis);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            logger2.error("insertBulk 错误", e);
        } finally {
            connectionPool.releaseConnection(client);
        }
    }
复制代码

 

posted @   几个Ak  阅读(1064)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示