Es bulk批量导入数据(1w+以上)

最近在学习es的理论知识以及实际操作,随时更新~
概要:首先你得有1w条数据的json,然后用java读取json文件导入

一. 创建Json数据

首先我生成1.5w条数据,是为了实践分页查询,用from-size和scroll翻页去实践
生成四个字段,name、age、sex、telephone

代码如下:可直接复制粘贴用

package es;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

/**
 * 生成1.5W条json数据
 */
public class JsonGenerator {
    public static void main(String[] args) {
        int numberOfRecords = 15000;
        String outputFile = "user.json";

        try (FileWriter writer = new FileWriter(outputFile)) {
            for (int i = 0; i < numberOfRecords; i++) {
                writer.write(generateJsonRecord());
                if (i < numberOfRecords - 1) {
                    writer.write(",");
                } else {
                    writer.write(" ");
                }
            }
            System.out.println("Generated " + numberOfRecords + " records successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static String generateJsonRecord() {
        String name = generateRandomName();
        int age = generateRandomAge();
        String sex = generateRandomSex();
        String telephone = generateRandomTelephone();
        return "{\"name\":\"" + name + "\",\"age\":\"" + age + "\",\"sex\":\"" + sex + "\",\"telephone\":\"" + telephone + "\"}";
    }

    private static String generateRandomName() {
        String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 5; i++) {
            sb.append(characters.charAt(random.nextInt(characters.length())));
        }
        return sb.toString();
    }

    private static int generateRandomAge() {
        Random random = new Random();
        return random.nextInt(65) + 18;  // Generate age between 18 and 65
    }

    private static String generateRandomSex() {
        Random random = new Random();
        return random.nextBoolean() ? "Male" : "Female";
    }

    private static String generateRandomTelephone() {
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            sb.append(random.nextInt(10));  // Append random digit to the telephone number
        }
        sb.append("-");
        for (int i = 0; i < 3; i++) {
            sb.append(random.nextInt(10));  // Append random digit to the telephone number
        }
        return sb.toString();
    }
}

生成的文件在该位置上
在这里插入图片描述

二.bulk 批量导入数据

public class EsConnectionExample {                                   
                                                                     
    public static void main(String[] args) throws IOException {      
       // 创建客户端                                                                                                            
 	 RestHighLevelClient client = new RestHighLevelClient(                                                               
         RestClient.builder(                                                                                         
                 new HttpHost("ip", port, "http"))); // 修改为你的ES地址和端口                                      
                                                                                                                                                                                                                           
     //bulk 导入  
     //这块改成你的文件的地址                                                                                         
     try (BufferedReader reader = new BufferedReader(new FileReader("user.json"))) {                     
         String line;                                                                                    
                                                                                                         
         // 构造 BulkRequest 对象并添加要导入的文档                                                                   
         BulkRequest request = new BulkRequest();                                                        
         while ((line = reader.readLine()) != null) {                                                    
             XContentBuilder builder = XContentFactory.jsonBuilder()                                     
                     .startObject()                                                                      
                     .field("name", line)                                                                
                     .field("age", line)                                                                 
                     .field("sex" , line)                                                                
                     .field("telephone", line)                                                           
                     .endObject();   
             //这块改成你的索引名字                                                                    
             IndexRequest indexRequest = new IndexRequest("my_index")                                    
                     .source(builder);                                                                   
             request.add(indexRequest);                                                                  
         }                                                                                               
                                                                                                         
         // 发送 BulkRequest 请求                                                                            
         BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);                           
                                                                                                         
         if (response.hasFailures()) {                                                                   
             System.out.println("Failed to import documents.");                                          
         } else {                                                                                        
             System.out.println("Documents imported successfully!");                                     
         }                                                                                               
     } catch (IOException e) {                                                                           
         e.printStackTrace();                                                                            
     } finally {                                                                                         
         // 关闭 ElasticSearch 客户端连接                                                                       
         client.close();                                                                                 
     } 
   }                                                                                                  
 }                                                                                                                                                                                                               

此时已经插入了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/334272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UG机械制图的基本常识

目前来说工程图就是传递产品信息的工具&#xff0c;所以图纸一定不能出错&#xff0c;因为所有的设计都要转化为生产的输入。 一张完整的工程图应由图框&#xff0c;图素&#xff0c;尺寸标注以及技术要求这四部分组成&#xff0c; 图框包括图纸幅面&#xff1a;A0,A1,A2,A3,…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

nvm, node.js, npm, yarn 安装配置

文章目录 nvm 安装node.js 安装npm yarn 配置 nvm 安装 nvm 是一个 node.js 管理工具&#xff0c;可以快捷下载安装使用多个版本的node.js linux 命令行输入&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashwget -qO- https…

电子签名实名认证的必要性解析

电子签名是确保电子文件真实性和完整性的重要手段&#xff0c;而实名认证则是保证电子签名有效性的必要条件。在电子签名过程中&#xff0c;实名认证的作用主要体现在以下几个方面&#xff1a; 确认身份&#xff1a;实名认证能够确认签署者的真实身份&#xff0c;防止冒签、代…

SL1581降压恒压芯片 4V至30V降5V输出 电流2.4A 电路简单

SL1581降压恒压芯片是一款非常实用的电源管理芯片&#xff0c;它能够在4V至30V的输入电压范围内实现5V的稳定输出&#xff0c;同时最大输出电流可达2.4A。相比传统的线性降压电源&#xff0c;SL1581采用了开关电源的原理&#xff0c;因此其电路更加简单、高效和可靠。 在电路设…

决策树、随机森林可视化

分享一个Python可视化工具pybaobabdt&#xff0c;轻松对决策树、随机森林可视化&#xff0c;例如&#xff0c; 图怎么看&#xff1a;每一种颜色代表一个class&#xff0c;link的宽度表示从一个节点流向另一个节点的items数量。 安装 pip install pybaobabdt pip install pygra…

ESC云服务器使用

购买云服务器 选择CPU&#xff0c;内存&#xff0c;选择硬盘大小&#xff0c;选择系统购买。 我买的2C4G40G&#xff0c;用来使用docker部署应用。1个月费用100多点。 购买后&#xff0c;在控制台可以看到实例 远程连接 阿里云客户端 下载客户端&#xff0c;在控制台需要先创…

WPF入门到跪下 第十一章 Prism(一)数据处理

官网&#xff1a;https://primslibrary.com 源码地址&#xff1a;https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架&#xff0c;提供了一组设计模式的实现&#xff0c;有助于编写结构良好的且可维护的XAML应用程序&#xff0c;包括MVVM、依赖注入、命…

Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)

前言 在项目研发中&#xff0c;相信大家都遇到过给用户增加头像照片的需求。 随着手机版本的不断更新&#xff0c;android 8、android 9、android 10、android 12、android 13、鸿蒙系统等等&#xff1b;遇到这个功能需求&#xff0c;大家肯定会想&#xff0c;“这还不好写&…

一键AI智能改写,自动修改文章效率高

在当今信息爆炸的时代&#xff0c;写作成为了人们日常生活和工作中不可或缺的一部分。不论是学生写作业&#xff0c;还是职场人士起草报告&#xff0c;都需要投入大量的时间和精力来构思和修改文章。然而&#xff0c;随着科技的不断进步&#xff0c;一项新的技术正在改变着写作…

HTML111111111

在线编辑器 在线 HTML 空元素 没有内容的 HTML 元素被称为空元素。空元素是在开始标签中关闭的。 即使 在所有浏览器中都是有效的&#xff0c;但使用 其实是更长远的保障。 HTML 水平线 标签在 HTML 页面中创建水平线。 hr 元素可用于分隔内容。 HTML 折行 如果您希望…

免费的爬虫软件【2024最新】

在国际市场竞争日益激烈的背景下&#xff0c;国外网站的SEO排名直接关系到网站在搜索引擎中的曝光度和用户点击量。良好的SEO排名能够带来更多的有针对性的流量&#xff0c;提升网站的知名度和竞争力。 二、国外网站SEO排名的三种方法 关键词优化&#xff1a; 关键词优化是SEO…

Java基础面试题-2day

面向对象 创建一个对象用什么运算符&#xff0c;对象实体和对象引用有什么不同&#xff1f; 创建对象使用new String A new String(); A即为对象引用&#xff0c;通过new运算符&#xff0c;创建String()类型的对象实体。 对象引用的存储位置在栈内存 对象实体的存储位置在堆…

分布式事务Seata实战-AT模式(注册中心为Eureka)

大致记录Seata的AT模式下创建项目过程中需要注意的点和可能遇到的问题。 本项目是以官网的给的示例&#xff08;即下图&#xff09;进行创建的&#xff0c;以Eureka为注册中心。 官网&#xff1a;Seata AT 模式 | Apache Seata™ 官方代码示例&#xff1a; 快速启动 | Apac…

C++编写、生成、调用so库详解(一)

开发中经常会用到so库,大多是调用第三方的so库,偶尔也需要自己封装一个so库给别人调用,这边就记录一下开发so库的一个过程. 首先我们这边是在Android Studio中开发的,所以仅描述在Android环境下开发过程,当然也可以用其他工具开发. 目录 1.第一步新建项目,配置需要的工具 2…

MFTCoder 重磅升级 v0.3.0 发布,支持 Mixtral 等更多模型,支持收敛均衡,支持 FSDP

1. MFTCoder 简介 CodeFuse在2023年9月开源了一种多任务微调框架——MFTCoder&#xff0c;它可以实现在多个任务上同时并行地进行微调。通过结合多种损失函数&#xff0c;我们有效地解决了多任务学习中常见的任务间数据量不平衡、难易不一和收敛速度不一致等挑战。大量实验结果…

『Open3D』1.10 Tensor数据处理

open3d中实现了自身的数据类型,用于open3d中内部算法的数值计算,但基础使用上与numpy类似。 目录 1、tensor创建 2、tensor数据属性 3、 Tensor数据在CPU与GPU上的转换

An incompatible version [1.2.33] of the Apache Tomcat Native library is installed

ERROR&#xff1a;An incompatible version [1.2.33] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.34] 意为&#xff1a;安装了不兼容的Apache Tomcat原生库版本[1.2.33]&#xff0c;而Tomcat需要的版本[1.2.34] ERROR 14496 ---…

工业相机与镜头参数及选型

文章目录 1、相机成像系统模型1.1 视场1.2 成像简化模型 2、工业相机参数2.1 分辨率2.2 靶面尺寸2.3 像元尺寸2.4 帧率/行频2.5 像素深度2.6 动态范围2.7 信噪比2.8 曝光时间2.9 相机接口 3、工业镜头参数3.1 焦距3.2 光圈3.3 景深3.4 镜头分辨率3.5 工作距离&#xff08;Worki…