环境配置

SpringBoot-2.1.8 + Elasticsearch-6.2.2

版本问题

spring官网提供

  • elasticsearch
  • spring-data-elasticsearch
  • spring-boot-starter-data-elasticsearch

有三种集成方式可选择,我这里的springboot2.1.8对elasticsearch最高支持到6.2.2

连接方式

  • REST API,端口9200,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接,分为Java Low Level REST Client和Java High Level REST Client。
  • Transport连接端口9300,这种客户端连接方式是直接连接ES的节点(给定多个集群节点,将客户端负载均衡地向这个节点地址集发送请求),使用TCP的方式进行连接。
  • spring封装后的调用:spring-data-elasticsearch和spring-boot-starter-data-elasticsearch。

测试代码

import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;import org.springframework.data.elasticsearch.core.query.IndexQuery;import org.springframework.test.context.junit4.SpringRunner;import org.xinhua.cbcloud.pojo.DocLog;import org.xinhua.cbcloud.repository.DocLogRepository;import org.xinhua.cbcloud.util.IDUtil;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;@RunWith(SpringRunner.class)@SpringBootTestpublic class LyfeifeiApplicationTests { private Logger logger = LoggerFactory.getLogger(LyfeifeiApplicationTests.class); @Autowired ElasticsearchTemplate elasticsearchTemplate; @Autowired DocLogRepository docLogRepository; @Test public void createIndex() { // 创建索引 System.out.println(elasticsearchTemplate.createIndex(DocLog.class)); } @Test public void deleteIndex() throws Exception { System.out.println(elasticsearchTemplate.deleteIndex(DocLog.class)); } @Test public void insert() throws Exception { int counter = 0; logger.info("开始执行"); List docLogs = new ArrayList<>(); for (int i = 0; i < 1000000; i++) { DocLog docLog = new DocLog(); docLog.setId(IDUtil.getId()); docLog.setDocId(String.valueOf(IDUtil.getId())); docLog.setMessageId("1569482824826#b807cc4a-6258-4f61-a445-c97006d9512c"); docLog.setContext("111111"); docLogs.add(docLog); } // 索引队列 List indexQueries = new LinkedList<>(); for (DocLog docLog : docLogs) { IndexQuery indexQuery = new IndexQuery(); indexQuery.setId(String.valueOf(IDUtil.getId())); indexQuery.setObject(docLog); indexQuery.setIndexName("doclog"); indexQuery.setType("docs"); indexQueries.add(indexQuery); if (counter % 5000 == 0) { elasticsearchTemplate.bulkIndex(indexQueries); indexQueries.clear(); } counter++; } if (indexQueries.size() > 0) { elasticsearchTemplate.bulkIndex(indexQueries); } logger.info("执行结束"); }}

测试结果

写在最后

目前的es为单节点并没有做集群,100w数据生成再导入es不到两分钟,感觉还能接受吧。这个本身没有太多难点,es的强大更表现在查询检索方面,bulkIndex是它提供的一个批量导入方法。es的数据插入小弟尝试过多线程批量导入,但是无论是单条还是批量都以失败告终,应该是其内部的锁造成的,暂时还没有做深入研究。

es 插入数据_记录一次Java导入百万级数据到Elasticsearch经历相关推荐

  1. Java代码实现百万级数据XLS文件和XLSX文件的读取(已经过测试, 安心使用)

    前言 工作中通常会有XLS和XLSX文件转换成CSV文件的需求,虽然Excel和WPS可以将这两种格式文件很方便的转换,但是不可能将生产上的数据下载下来转换后再上传上去(这真是个疯狂的想法...).目 ...

  2. Java写入大字符串到oracle数据库_java程序如何提高oracle百万级数据的insert效率

    业务:需要从一个数据库查询百万级数据,在java程序中插入到另一个oracle数据库中 代码: private final int persize = 1000; /** * 推送数据-流程 * @p ...

  3. MYSQL百万级数据,如何优化

    MYSQL百万级数据,如何优化 首先,数据量大的时候,应尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引,建索引可以大大加快数据的检索速度.但是,有些情况索引是不会起效 ...

  4. 使用POI导出百万级数据到excel的解决方案

    使用POI导出百万级数据到excel的解决方案 参考文章: (1)使用POI导出百万级数据到excel的解决方案 (2)https://www.cnblogs.com/hxun/p/11419006. ...

  5. oracle百万级数据导入,用Perl从oracle导出百万级数据到excel

    Perl从oracle导出百万级数据到excel excel 2007 可以存放1048576行.16384列的数据:excel 2003大概是65535行 我从oracle中导出30万行60列的数据 ...

  6. 百万级数据量,千万级数据量是多少,海量数据的优化方案

    百万级数据量,千万级数据量是多少? 这里的百万级,千万级,针对数据库,指的是表的数据条数.有时也指并发事务量. 海量数据的优化方案 Note:    具体优化要结合自身的业务特性 百万级: 这个数据量 ...

  7. php导出1万条数据excel_PHP快速导出百万级数据到CSV或者EXCEL文件

    前言: 很多时候,因为数据统计,我们需要将数据库的数据导出到Excel等文件中,以供数据人员进行查看,如果数据集不大,其实很容易:但是如果对于大数集的导出,将要考虑各种性能的问题,这里以导出数据库一百 ...

  8. c++使用单向链表存储一组有序数据_《一起学习java和数据结构》系列-数组和链表...

    数组 数组是一个线性表数据结构.它用一段连续的内存地址空间,来存储一些相同类型的数据. 从上面的定义,我们不难看出几个关键词. 线性表:顾名思义,线性表就是数据排列成一条线的数据结构.每一个线性表只有 ...

  9. java sql 写入万条数据_如何快速向数据库插1000万数据?4种方法对比,它简单却速度最快

    目录 场景介绍 项目配置 Mybatis为什么慢? JdbcTemplate让我眼前一亮 原生JDBC就是快啊! 存储过程怎么样? 越简单越快 前言 一直有一种说法:批量插入大量数据到MySQL数据库 ...

最新文章

  1. python什么时候用框架_Python 中三大框架各自的应用场景
  2. 19-7-21 springboot学习
  3. 一、NLTK工具包使用
  4. couchdb java 连接_CouchDB客户端连接的说明---Java版
  5. log4j 程序日志_使用log4j监视和筛选应用程序日志到邮件
  6. SHT1x/SHT7x数字温湿度传感器驱动编写
  7. 人口简史:我们曾经差一点就彻底没了
  8. MySQL String Functions and Operators(字符串处理)
  9. oc UIAlertController封装
  10. 拆点并查集(poj 1182: 食物链)
  11. 思维导图让你掌握《有效沟通》
  12. 世界以痛吻我,我要报之以歌
  13. 阮一峰ES6旅程:入门布局
  14. CodeMeter服务不能启动的解决方法,rslogix5000,无法启动,codemeter服务没有启动,
  15. IP协议(网际协议)
  16. python 大小写字母怎么用数字表示_python判断字符串是字母 数字 大小写(转载)...
  17. java pdf to word_java pdf转word 高效不失真
  18. python写的hadoop实战_hadoop实战 pdf
  19. VS code 自动调整代码格式
  20. 爬取《政府工作报告》词云展示并做词频统计

热门文章

  1. MQTT+ActiveMQ实现消息推送
  2. ACE_Reactor(二)ACE_Dev_Poll_Reactor
  3. deepin--解决网易云音乐个性推荐无法加载
  4. 2017计算机等级考试题,2017年计算机二级考试题库及答案
  5. oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
  6. 华为自带时钟天气下载_华为EMUI10的最大亮点是什么?
  7. 1-uboot流程——概述
  8. 最小安装虚拟机命令行安装图形化
  9. Dos中@符号的使用演示(屏蔽echo off的回显)
  10. ZooKeeper 定位:能解决什么问题?不能解决什么问题?