The best elasticsearch highlevel java rest api-----bboss

1.ElasticSearch客户端bboss提供了一系列注解

@ESId  用于标识实体对象中作为docid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,默认为true-保存,false不保存,字段名称为属性名称。ESId可用于添加和修改文档

@ESParentId 用于标识实体对象中作为parentid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,默认为true-保存,false不保存,字段名称为属性名称。ESParentId可用于添加和修改文档

@ESVersion 用于标识实体对象中作为文档版本信息的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESVersion可用于添加/修改文档操作

@ESVersionType 用于标识实体对象中作为文档版本类型信息的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESVersionType可用于添加/修改文档操作

@ESRetryOnConflict 用于标识实体对象中作为文档修改操作版本冲突重试次数信息的属性,数字类型。该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESRetryOnConflict可用于添加/修改文档操作

@ESRouting  用于标识实体对象中作为文档添加/修改操作路由信息的属性,字符串或者数字类型。该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESRouting可用于添加/修改文档操作

@ESDocAsUpsert 用于标识实体对象中控制文档修改操作时,文档不存在时是否添加文档的信息的属性,布尔值。该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESDocAsUpsert可用于添加/修改文档操作

@ESSource 用于标识实体对象中控制文档修改操作时,返回值是否包含文档source数据的控制变量的属性,布尔值。该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,true-保存,默认为false不保存,字段名称为属性名称。ESSource可用于修改文档操作

@Column 该注解用于指定日期格式,和JsonFormat属性结合一起使用:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
@Column(dataformat = "yyyy-MM-dd HH:mm:ss.SSS")

@JsonIgnore 标注实体属性不作为es字段保存,使用示例:

@JsonIgnore
private Integer sqlEndElapsed;

2.注解的使用示例

@ESId(persistent = false)
protected String id;
@ESParentId
protected String parentId;
@ESVersion
protected int version;
@ESVersionType
protected String versionType;
@ESRetryOnConflict
protected int retryOnConflict;
@ESRouting
protected String routing;
@ESDocAsUpsert
protected boolean docAsUpsert;
@ESSource
protected boolean returnSource;

3.结合控制注解的批量文档修改操作

    @Testpublic void testOrmBulk(){ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();List<OnlineGoodsInfoUpdateParams> onlineGoodsInfoUpdateParamss = new ArrayList<>();OnlineGoodsInfoUpdateParams onlineGoodsInfoUpdateParams = new OnlineGoodsInfoUpdateParams();onlineGoodsInfoUpdateParams.setId("aa");onlineGoodsInfoUpdateParams.setParentId("ppaa");onlineGoodsInfoUpdateParams.setType("tt");onlineGoodsInfoUpdateParams.setIndex("ddd");onlineGoodsInfoUpdateParams.setGoodsName("dddd");onlineGoodsInfoUpdateParams.setDocAsUpsert(true);onlineGoodsInfoUpdateParams.setRetryOnConflict(3);onlineGoodsInfoUpdateParams.setReturnSource(true);onlineGoodsInfoUpdateParams.setRouting("test");onlineGoodsInfoUpdateParams.setVersion(1);onlineGoodsInfoUpdateParams.setVersionType(ClientInterface.VERSION_TYPE_INTERNAL);onlineGoodsInfoUpdateParamss.add(onlineGoodsInfoUpdateParams);onlineGoodsInfoUpdateParams = new OnlineGoodsInfoUpdateParams();onlineGoodsInfoUpdateParams.setId("aa");onlineGoodsInfoUpdateParams.setParentId("ppaa");onlineGoodsInfoUpdateParams.setType("tt");onlineGoodsInfoUpdateParams.setIndex("ddd");onlineGoodsInfoUpdateParams.setGoodsName("dddd");/*** 设置更新文档控制变量*/onlineGoodsInfoUpdateParams.setDocAsUpsert(true);onlineGoodsInfoUpdateParams.setRetryOnConflict(3);onlineGoodsInfoUpdateParams.setReturnSource(true);onlineGoodsInfoUpdateParams.setRouting("test");onlineGoodsInfoUpdateParams.setVersion(1);onlineGoodsInfoUpdateParams.setVersionType(ClientInterface.VERSION_TYPE_INTERNAL);onlineGoodsInfoUpdateParamss.add(onlineGoodsInfoUpdateParams);String response = clientUtil.updateDocuments("aa","tt",onlineGoodsInfoUpdateParamss);System.out.println(response);}

我们可以看到执行updateDocuments方法时,生成的原生bulk报文如下,注意其中的控制参数信息:

{ "update" : { "_index" : "aa", "_type" : "tt", "_id" : "aa", "parent" : "ppaa", "_routing" : "test","retry_on_conflict":3,"_version":1,"_version_type":"internal" } }
{"doc":{"parentId":"ppaa","type":"tt","index":"ddd","routing":"test","goodsName":"dddd","brandId":0,"brandName":null,"shopCustomCategoryId":0,"goodsType":null,"quantityOfPacking":null,"freePostage":null,"postage":null,"goodsDescription":null,"packingDescription":null,"salesUnit":null,"minimumUnit":null,"minSalesPrice":0.0},"doc_as_upsert":true,"_source":true}
{ "update" : { "_index" : "aa", "_type" : "tt", "_id" : "aa", "parent" : "ppaa", "_routing" : "test","retry_on_conflict":3,"_version":1,"_version_type":"internal" } }
{"doc":{"parentId":"ppaa","type":"tt","index":"ddd","routing":"test","goodsName":"dddd","brandId":0,"brandName":null,"shopCustomCategoryId":0,"goodsType":null,"quantityOfPacking":null,"freePostage":null,"postage":null,"goodsDescription":null,"packingDescription":null,"salesUnit":null,"minimumUnit":null,"minSalesPrice":0.0},"doc_as_upsert":true,"_source":true}

reponse报文这里不做介绍,如果被标准的returnSource属性为true,那么在response中将包含文档的source字段信息。

4.参考资料

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-bulk.html

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-update.html

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-index_.html

https://my.oschina.net/bboss/blog/1556866

https://my.oschina.net/bboss/blog/1801273

转载于:https://www.cnblogs.com/rianbowymail/p/9115513.html

ElasticSearch客户端注解使用介绍相关推荐

  1. Elasticsearch环境搭建和介绍(Windows)

    一.Elasticsearch介绍和安装 1.1 介绍  Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticse ...

  2. 【转载】Elasticsearch客户端API使用Demo

    Elasticsearch客户端API使用Demo, 转载自官方文档, 以索引雇员文档为示例, 在命令行使用curl演示了一系列的Restful API操作. 1.索引雇员文档 第一个业务需求就是存储 ...

  3. Spring系列(十一):@Profile 注解用法介绍

    今天给大家分享Spring属性注入的注解@Profile 介绍,希望对大家能有所帮助! 一.@Profile 注解的作用 在Spring容器中如果存在同一类型的多个组件,可以使用@Profile注解标 ...

  4. Lombok的注解简单介绍

    Lombok的注解简单介绍 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...

  5. Elasticsearch: Cerebro 用户界面介绍

    介绍 Cerebro是以前的Elasticsearch插件Elasticsearch Kopf的演变(https://github.com/lmenezes/elasticsearch- kopf)– ...

  6. Elasticsearch:Ingest pipeline 介绍

    Ingest pipeline 可让你在索引之前对数据执行常见转换. 例如,你可以使用 pipeline 删除字段.从文本中提取值并丰富你的数据. Pipeline 由一系列称为处理器(process ...

  7. android手机照片传苹果电脑版,为知笔记Android/iPhone客户端图片传到电脑客户端的方法介绍...

    为知笔记是一款时下流行的支持多平台的云笔记软件,随时随地记录和查看有价值的信息,非常方便.当我们在用为知笔记电脑客户端编辑笔记时,常有从手机相册中取图片素材的需求,下面小编就来教教大家为知笔记手机传图 ...

  8. spring boot集成Elasticsearch客户端

    spring boot整合Elasticsearch客户端 在spring boot程序应用中集成Elasticsearch客户端,并通过配置对连接进行管理. Elasticsearch的客户端Jav ...

  9. ZooKeeper :Java客户端Watcher API介绍

    ZooKeeper :Java客户端Watcher API介绍 在上一篇博客中,博主给大家介绍了Java客户端的Session.ACL以及Znode API: ZooKeeper :Java客户端Se ...

最新文章

  1. 最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发
  2. 你所未知的3种 Node.js 代码优化方式
  3. k8s集群RBAC安全机制:role rolebing user
  4. Celery多个定时任务使用RabbitMQ,Queue冲突解决
  5. 我的世界服务器皮肤显示插件怎么用,我的世界皮肤和插件安装方法
  6. iOS:详细的正则表达式
  7. 御剑后台扫描工具下载、安装、使用教程
  8. 人脸生成黑科技:实现人脸转变特效,让人脸自动戴墨镜
  9. C#报表控件ReportViewer
  10. 爱奇艺落子IP源头 全产业链开放协同助攻原创内容
  11. 梯度消失、梯度爆炸产生的原因
  12. C# WinForm GUI之示例
  13. CTF新生赛之Writeup
  14. 这台笔记本最适合程序员编程!
  15. 红魔8pro pro+机型NX729J解锁bl 获取root教程
  16. 【渝粤教育】电大中专机械设计基础作业 题库
  17. (AAAI-2019)STA:用于大规模基于视频的行人重识别的时空注意力
  18. 如何有效地记忆与学习
  19. Jquery slider范围滑块,为两个滑块设置不同的setp值
  20. [学习SQL SERVER 2005系列]图解SQL SERVER2005的安装

热门文章

  1. C++---肿瘤面积
  2. axure源文件_Axure教程:实现网易云音乐有声播放效果
  3. python安全攻防---信息收集---whois查询
  4. 242. 有效的字母异位词 golang
  5. redis源码剖析(七)—— Redis 数据结构dict.c
  6. 字符串题目---2判断两个字符串是否为变形词
  7. c++中this指针基本概念和使用
  8. Arbitrage——判断正环Bellman-Ford/SPFA
  9. P1092虫食算-深度优先搜索+玄学剪枝
  10. 进程的挂起以及可重入函数