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(三),添加文档,批量添加文档...相关推荐

  1. oracle 插入n字母,Nhibernate在oracle批量插入失败,求解?

    100 加了这句,发现在oracle不起作用.一样的代码,如果在sql08下运行能生效. using (var session = SessionFactory.NHSessionFactory.Op ...

  2. 转:Mybatis与JDBC批量插入数据库哪个更快

    转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...

  3. jdbc批量插入的4种方式【百万条数据插入只需几秒】

    mysql数据库准备 #打开数据库test01; use test01; #创建表a,表a包含int型的id列.可变长度型的name[长度20个字符] create table a (id INT,N ...

  4. php mongodb 批量插入,MongoDB不支持批量插入

    mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value.value.value...)那样的语法,也不支持transac ...

  5. SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便

    在线工具 一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方 ...

  6. JDBC executeBatch批量插入数据

    JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 con.setAutoCommit(false); 项目 ...

  7. 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解

    SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...

  8. C#中几种数据库的大数据批量插入

    C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插 ...

  9. oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA

    [数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...

最新文章

  1. Python使用matplotlib可视化时间序列季节图、使用季节图可以比较不同年份相同月份的数据差异、或者相同(年/月/周等)的时间序列在同一天的数据差异(Seasonal Plot)
  2. AKOJ-1695-找素数
  3. 都说做ToB商业模式,VR AR博物馆内容的矿或许可以挖下
  4. 【转】不分英文字母大小寫的字串比較方式
  5. 修饰符(public/private/default/protected)
  6. 9.26-mkdir,tree,touch命令
  7. 如何在业务层实现响应缓存
  8. mpvue返回上一个页面_Mpvue+Vant-Weapp开发小程序遇坑之解决系列
  9. 移动应用广告盈利-KeyMob移动广告聚合平台
  10. Julia: 编译成EXE文件
  11. 这款开源带采集的漫画cms,宅男的大爱
  12. python识别文字答题_头脑王者的Python答题助手——从OCR文字识别到Fiddler抓包
  13. ZABBIX 监控WEB服务 统计PV和UV
  14. main java.lang,各位大哥办我看看,Exception in thread main java.lang.Error: 无法解析的编译有关问题...
  15. 属羊的几月出生最好命
  16. 【工具篇】EasyExcel的应用
  17. 计算机辅助制造工程师什么,cam工程师是什么意思
  18. Java发送QQ邮件问题Could not connect to SMTP host: smtp.qq.com, port: 465(内附完整代码)
  19. opencv之Mat的定义
  20. 6.网络基础-Network Monitor和Httpwatch工具

热门文章

  1. Android毕业设计答辩会问什么问题,毕业论文答辩一般会问什么问题怎么回答
  2. JDK的下载,安装与配置(Win10安装方法)
  3. 使用java做一个能赚钱的微信群聊机器人(2020年基于PC端协议最新可用版)
  4. 重温马云英文演讲:最伟大的成功
  5. 树莓派打造无线扫描仪.
  6. (ACWing217)绿豆蛙的归宿(数学期望)
  7. Word 如何从任意页开始显示页码
  8. 这个650万科学大奖来了!今年颁给谁?
  9. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?
  10. 分众传媒CEO江南春:没钱是这个社会进步最大的动力