ElasticSearch客户端注解使用介绍
1.ElasticSearch客户端bboss提供了一系列注解
@ESId 用于标识实体对象中作为docid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,默认为true-保存,false不保存,字段名称为属性名称。ESId可用于添加和修改文档;readSet属性:默认false,设置为true时,检索的时候会将文档id设置到被注解的对象属性中
@ESParentId 用于标识实体对象中作为parentid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,默认为true-保存,false不保存,字段名称为属性名称。ESParentId可用于添加和修改文档;readSet属性:默认false,设置为true时,检索的时候会将文档parentid设置到被注解的对象属性中
@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.结合控制注解的批量文档修改操作
@Test public 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
开发交流
elasticsearch技术交流群:166471282
elasticsearch微信公众号:bbossgroups
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
饿了么大数据计算引擎实践与应用
饿了么BDI-大数据平台研发团队目前共有20人左右,主要负责离线&实时Infra和平台工具开发。其中6人的离线团队需要维护大数据集群规模如下: Hadoop集群规模1300+ HDFS存量数据40+PB,Read 3.5 PB+/天,Write 500TB+/天 14W MR Job/天,10W Spark Job/天,25W Presto/天 此外还需要维护Hadoop、Spark、Hive、Presto等组件饿了么内部版本,解决公司400+大数据集群用户每天面临的各种问题。 本文主要介绍饿了么大数据团队如何通过对计算引擎入口的统一,降低用户接入门槛。如何让用户自助分析任务异常及失败原因,以及如何从集群产生的任务数据本身监控集群计算/存储资源消耗,监控集群状况,监控异常任务等。 引擎入口统一 目前在饿了么对外提供的查询引擎主要有Pre
- 下一篇
云HBase支持单节点基础版
信息摘要: HBase单节点版本是在集群版本的基础上推出的基础版本,超低成本。 适用客户: 1、开发测试场景:企业或个人开发的测试环境搭建,灵活且低门槛的HBase单节点实例能高效满足测试场景下的HBase实际需求 2、学习培训场景:个人开发者或培训机构以较低的价格获取HBase单节点实例,对其进行各类场景的测试和学习 3、非核心业务:用于线上如系统、服务器日志等可用性要求较低的业务场景,通过较低的价格创建HBase单节点实例,保障业务顺利运行的同时,降低企业的投入和管理成本 版本/规格功能: 支持单节点规格,新增基础版本产品形态。支持3种规格:1Core2G/2Core4G/4Core8G,单节点数据存放在云盘上,利用云盘的副本保证数据持久性。售价集群版本1/4不到,价格最低最低99块/3个月。 产品文档: https://help.
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6