ElasticSearch客户端注解使用介绍
Posted rainbowaab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch客户端注解使用介绍相关的知识,希望对你有一定的参考价值。
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.结合控制注解的批量文档修改操作
@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客户端注解使用介绍的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch全文检索技术 一篇文章即可从入门到精通(Elasticsearch安装,安装kibana,安装ik分词器,数据的增删改查,全文检索查询,聚合aggregations)(代码片
Spring中Bean初始化及销毁方法(InitializingBean接口DisposableBean接口@PostConstruct注解@PreDestroy注解以及init-method(代码片
ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )(代码片