原文网址:bboss-elasticsearch--API_IT利刃出鞘的博客-CSDN博客
说明
本文介绍bboss-elasticsearch的API。
官网
Elasticsearch索引文档增删改查 - Elasticsearch Bboss
Elasticsearch开发指南 - Elasticsearch Bboss
官网
ElasticSearch客户端注解介绍 - Elasticsearch Bboss
注解 | 说明 | 重要属性/示例 |
@ESId | 指定文档id值,作为文档唯一标识。 根据此值对应的索引文档存在与否来决定添加或者修改操作(存在则修改,不存在则添加)。 若不用此注解,添加文档时es自动设置文档id属性。 | // 是否将注解属性作为普通文档属性来保存。 // 查询/检索文档时,是否将文档id设置给对应被注解的属性 示例: //ip作为id,根据ip值对应的索引文档存在与否来决定添加或修改 @ESId(readSet = true,persistent = false) |
@ESParentId | 指定为parentid | // 是否将注解属性作为普通文档属性来保存。 // 查询/检索文档时,是否将文档id设置给对应被注解的属性 |
@ESVersion | 指定为文档版本信息。 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@ESVersionType | 指定文档版本类型。 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@ESRetryOnConflict | 文档修改操作版本冲突重试次数 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@ESRouting | 路由信息 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@ESDocAsUpsert | 文档不存在时是否添加文档 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@ESSource | 返回值是否包含文档source数据的控制变量 | // 是否将注解属性作为普通文档属性来保存。 boolean persistent() default true; |
@Column | 指定索引文档和对象属性的映射关系、指定日期格式等。 指定日期格式时一般与@JsonFormat一起使用。例如: @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") @Column(dataformat = "yyyy-MM-dd HH:mm:ss.SSS") | escape:是否对参数值进行特殊字符转义处理。true 处理;false 不处理。 默认为空,这时若是map传递参数,默认转义;若是bean传值,若bean属性指定了@Column(escape="false")则按照注解中设置的escape属性值来控制是否转义,若没在column注解中指定escape,则默认转义。 示例: @Column(name="docInfo.author",dataformat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",timezone = "Etc/UTC",locale = "zh") private String docInfoAuthor; |
@JsonIgnore | 不作为es字段保存 | @JsonIgnore private Integer sqlEndElapsed; |
@PrimaryKey | 跟@EsId作用一样(推荐用@EsId) @EsId比@PrimaryKey多两个属性:readSet,persistent |
bboss 5.6.8新增了一组添加和修改文档的api,这组api没有带indexName和indextype参数,对应的索引和索引type在po对象中通过@ESIndex注解来指定。
@ESIndex提供了两个属性name和type,使用方法:
@ESIndex(name="indexName") //es 7不需要指定type
@ESIndex(name="indexName",type="indexName")
// 索引名称由indexName和日期类型字段agentStarttime通过yyyy.MM.dd格式化后的值拼接而成,索引类型为indexName
@ESIndex(name="indexName-{agentStarttime,yyyy.MM.dd}",type="indexName")
// 索引名称由indexName和当前日期通过yyyy.MM.dd格式化后的值拼接而成,索引类型为type字段对应的值
@ESIndex(name="indexName-{dateformat=yyyy.MM.dd}",type="{type}")
// 索引名称由indexName和日期类型字段agentStarttime通过yyyy.MM.dd格式化后的值拼接而成,索引类型为type字段对应的值
@ESIndex(name="indexName-{field=agentStarttime,dateformat=yyyy.MM.dd}",type="{field=type}")
示例
@ESIndex(name="indexName",type="indexType")
public class MyEntiry {
//设定文档标识字段
@ESId(readSet = true,persistent = false)
private Long demoId;
...
}
可以通过两种方法获得ClientInterface。都是单实例多线程安全的。(实际上,BBossESStarter 里边就是调用的ElasticSearchHelper的静态方法。。。)
SpringBoot环境:注入BBossESStarter 后获取
@Autowired
private BBossESStarter bbossESStarter;
ClientInterface clientInterface = bbossESStarter.getRestClient();
//ClientInterface clientInterface = bbossESStarter.getConfigRestClient("esmapper/xxx.xml");
SpringBoot环境通过下边的方法获取也能用,但官方说要使用本处方法,但没有给出原因。经自己使用,SpringBoot环境下使用本方法的优点:
1.能输出向ES服务器发出的请求到控制台
非SpringBoot环境:ElasticSearchHelper静态方法
ClientInterface clientInterface = ElasticSearchHelper.getRestClientUtil();
//ClientInterface clientInterface = ElasticSearchHelper.getConfigRestClientUtil("esmapper/xxx.xml");
除了通过ESId和ESParentId这两个注解来指定文档id和parentid,ClientInterface接口中还提供了一组方法来提供docid和parentid两个参数来指定文档id和parentid。