springboot执行批量插入_springboot2.1.8+elasticsearch7.3.2(三),添加文档,批量添加文档...
Service:
/**
* 添加文档
* @param obj
*/
public String createDoc(Object obj){
/**
* 设置索引,必须是小写,所以使用toLowerCase()方法进行转换
*/
IndexRequest request = new IndexRequest(obj.getClass().getSimpleName().toLowerCase());
/**
* 设置文档id。如果不设置,系统会自动生成
*/
//request.id("xxxx");
request.source(JSONObject.toJSONString(obj), XContentType.JSON);
try {
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
log.info(JSONObject.toJSONString(response));
if(DocWriteResponse.Result.CREATED == response.getResult()){
return response.getId();
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 批量处理文档
* @param list 需要处理的文档列表
*/
public void createMultiDoc(List list){
BulkRequest request = new BulkRequest();
/**
* 遍历
* IndexRequest不设置id,让系统自己添加
* DeleteRequest 批量删除
* UpdateRequest 批量更新
*/
list.forEach((obj)->{
request.add(new IndexRequest(obj.getClass().getSimpleName().toLowerCase())
.source(JSONObject.toJSONString(obj), XContentType.JSON));
});
try {
BulkResponse bulkResponse = client.bulk(request,RequestOptions.DEFAULT);
log.info(JSONObject.toJSONString(bulkResponse));
bulkResponse.forEach((BulkItemResponse bulkItemResponse)->{
DocWriteResponse itemResponse = bulkItemResponse.getResponse();
switch (bulkItemResponse.getOpType()) {
case INDEX:
case CREATE:
IndexResponse indexResponse = (IndexResponse) itemResponse;
log.info(JSONObject.toJSONString(indexResponse));
if(DocWriteResponse.Result.CREATED == indexResponse.getResult()){
log.info("添加成功");
}
break;
case UPDATE:
UpdateResponse updateResponse = (UpdateResponse) itemResponse;
break;
case DELETE:
DeleteResponse deleteResponse = (DeleteResponse) itemResponse;
break;
default:break;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
测试类:
/**
* 测试添加文档
*/
@Test
public void createDoc(){
Article article = new Article();
article.setTitle("水调歌头·明月几时有");
article.setContent("丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。\n" +
"\n" +
"明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间?(何似 一作:何时;又恐 一作:惟 / 唯恐)\n" +
"转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。(长向 一作:偏向)");
article.setCreate_time(new Date());
String result = commodityServiceImpl.createDoc(article);
log.info("添加文档返回的id:{}",result);
}
/**
* 测试批量添加文档
*/
@Test
public void createMultiDoc(){
Article article1 = new Article();
article1.setTitle("声声慢·寻寻觅觅");
article1.setContent("寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。\n" +
"满地黄花堆积,憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)测试春晚");
article1.setCreate_time(new Date());
Article article2 = new Article();
article2.setTitle("卜算子·咏梅");
article2.setContent("驿外断桥边,寂寞开无主。已是黄昏独自愁,更著风和雨。(著 同:着) \n" +
"无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故。");
article2.setCreate_time(new Date());
Article article3 = new Article();
article3.setTitle("武陵春·春晚");
article3.setContent("风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。\n" +
"闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动许多愁。测试寻寻觅觅咏梅.测试咏梅");
article3.setCreate_time(new Date());
List list = new ArrayList<>();
list.add(article1);
list.add(article2);
list.add(article3);
commodityServiceImpl.createMultiDoc(list);
}
运行测试类的批量添加之后控制台输出:
2019-09-21 00:31:08.468 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : {"fragment":false,"id":"LTODT20Bk6nS0BLhTTX_","index":"article","primaryTerm":1,"result":"CREATED","seqNo":0,"shardId":{"fragment":true,"id":-1,"index":{"fragment":false,"name":"article","uUID":"_na_"},"indexName":"article"},"shardInfo":{"failed":0,"failures":[],"fragment":false,"successful":1,"total":1},"type":"_doc","version":1}
2019-09-21 00:31:08.468 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : 添加成功
2019-09-21 00:31:08.469 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : {"fragment":false,"id":"LjODT20Bk6nS0BLhTTX_","index":"article","primaryTerm":1,"result":"CREATED","seqNo":1,"shardId":{"fragment":true,"id":-1,"index":{"fragment":false,"name":"article","uUID":"_na_"},"indexName":"article"},"shardInfo":{"failed":0,"failures":[],"fragment":false,"successful":1,"total":1},"type":"_doc","version":1}
2019-09-21 00:31:08.469 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : 添加成功
2019-09-21 00:31:08.469 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : {"fragment":false,"id":"LzODT20Bk6nS0BLhTTX_","index":"article","primaryTerm":1,"result":"CREATED","seqNo":2,"shardId":{"fragment":true,"id":-1,"index":{"fragment":false,"name":"article","uUID":"_na_"},"indexName":"article"},"shardInfo":{"failed":0,"failures":[],"fragment":false,"successful":1,"total":1},"type":"_doc","version":1}
2019-09-21 00:31:08.469 INFO 230324 --- [ main] c.z.e.service.impl.ServiceImpl : 添加成功
在kibana中查看mapping,发现实体类Article的create_time也出现了
{
"mapping": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word"
},
"create_time": {
"type": "long"
},
"title": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
也可以在后台看到新创建的文档数量
在Dev Tools 页面执行GET /article/_search 查看:上面使用批量添加接口添加的文档已经出现了
springboot执行批量插入_springboot2.1.8+elasticsearch7.3.2(三),添加文档,批量添加文档...相关推荐
- oracle 插入n字母,Nhibernate在oracle批量插入失败,求解?
100 加了这句,发现在oracle不起作用.一样的代码,如果在sql08下运行能生效. using (var session = SessionFactory.NHSessionFactory.Op ...
- 转:Mybatis与JDBC批量插入数据库哪个更快
转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...
- jdbc批量插入的4种方式【百万条数据插入只需几秒】
mysql数据库准备 #打开数据库test01; use test01; #创建表a,表a包含int型的id列.可变长度型的name[长度20个字符] create table a (id INT,N ...
- php mongodb 批量插入,MongoDB不支持批量插入
mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value.value.value...)那样的语法,也不支持transac ...
- SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便
在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...
- JDBC executeBatch批量插入数据
JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 con.setAutoCommit(false); 项目 ...
- 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...
- C#中几种数据库的大数据批量插入
C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插 ...
- oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA
[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...
最新文章
- Python使用matplotlib可视化时间序列季节图、使用季节图可以比较不同年份相同月份的数据差异、或者相同(年/月/周等)的时间序列在同一天的数据差异(Seasonal Plot)
- AKOJ-1695-找素数
- 都说做ToB商业模式,VR AR博物馆内容的矿或许可以挖下
- 【转】不分英文字母大小寫的字串比較方式
- 修饰符(public/private/default/protected)
- 9.26-mkdir,tree,touch命令
- 如何在业务层实现响应缓存
- mpvue返回上一个页面_Mpvue+Vant-Weapp开发小程序遇坑之解决系列
- 移动应用广告盈利-KeyMob移动广告聚合平台
- Julia: 编译成EXE文件
- 这款开源带采集的漫画cms,宅男的大爱
- python识别文字答题_头脑王者的Python答题助手——从OCR文字识别到Fiddler抓包
- ZABBIX 监控WEB服务 统计PV和UV
- main java.lang,各位大哥办我看看,Exception in thread main java.lang.Error: 无法解析的编译有关问题...
- 属羊的几月出生最好命
- 【工具篇】EasyExcel的应用
- 计算机辅助制造工程师什么,cam工程师是什么意思
- Java发送QQ邮件问题Could not connect to SMTP host: smtp.qq.com, port: 465(内附完整代码)
- opencv之Mat的定义
- 6.网络基础-Network Monitor和Httpwatch工具