|
该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用Spring Data Elasticsearch 5.5.5! |
弹性搜索审计
准备实体
为了让审计代码能够判断某个实体实例是否全新,实体必须实现Persistable<ID>该接口定义如下:
import org.springframework.lang.Nullable;
public interface Persistable<ID> {
@Nullable
ID getId();
boolean isNew();
}
由于 Id 的存在不足以判断 Elasticsearch 中一个能性是否新,因此需要更多信息。一种方法是使用与创建相关的审计字段进行决策:
一个人实体可能如下所示——省略getter和setter方法以简化:
@Document(indexName = "person")
public class Person implements Persistable<Long> {
@Id private Long id;
private String lastName;
private String firstName;
@CreatedDate
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
private Instant createdDate;
@CreatedBy
private String createdBy
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
@LastModifiedDate
private Instant lastModifiedDate;
@LastModifiedBy
private String lastModifiedBy;
public Long getId() { (1)
return id;
}
@Override
public boolean isNew() {
return id == null || (createdDate == null && createdBy == null); (2)
}
}
| 1 | 获取器是接口所需的实现 |
| 2 | 如果一个对象要么没有身份证或者不设置包含创建属性的字段。 |
激活审计
在实体设立并提供审计员-或ReactiveAuditorAware- 审计必须通过设置@EnableElasticsearchAuditing在配置类上:
@Configuration
@EnableElasticsearchRepositories
@EnableElasticsearchAuditing
class MyConfiguration {
// configuration code
}
使用响应式栈时,必须满足:
@Configuration
@EnableReactiveElasticsearchRepositories
@EnableReactiveElasticsearchAuditing
class MyConfiguration {
// configuration code
}
如果你的代码包含多个审计员对于不同类型的豆子,你必须提供豆子的名称作为论证auditorAwareRef参数@EnableElasticsearchAuditing注解。