Elasticsearch Auditing

Preparing entities

In order for the auditing code to be able to decide whether an entity instance is new, the entity must implement the Persistable<ID> interface which is defined as follows:

package org.springframework.data.domain;

import org.springframework.lang.Nullable;

public interface Persistable<ID> {
    ID getId();

    boolean isNew();

As the existence of an Id is not a sufficient criterion to determine if an enitity is new in Elasticsearch, additional information is necessary. One way is to use the creation-relevant auditing fields for this decision:

A Person entity might look as follows - omitting getter and setter methods for brevity:

@Document(indexName = "person")
public class Person implements Persistable<Long> {
    @Id private Long id;
    private String lastName;
    private String firstName;
    @Field(type = FieldType.Date, format = DateFormat.basic_date_time)
    private Instant createdDate;
    private String createdBy
    @Field(type = FieldType.Date, format = DateFormat.basic_date_time)
    private Instant lastModifiedDate;
    private String lastModifiedBy;

    public Long getId() {                                                 (1)
        return id;

    public boolean isNew() {
        return id == null || (createdDate == null && createdBy == null);  (2)
1 the getter is the required implementation from the interface
2 an object is new if it either has no id or none of fields containing creation attributes are set.

Activating auditing

After the entities have been set up and providing the AuditorAware - or ReactiveAuditorAware - the Auditing must be activated by setting the @EnableElasticsearchAuditing on a configuration class:

class MyConfiguration {
   // configuration code

When using the reactive stack this must be:

class MyConfiguration {
   // configuration code

If your code contains more than one AuditorAware bean for different types, you must provide the name of the bean to use as an argument to the auditorAwareRef parameter of the @EnableElasticsearchAuditing annotation.