javascript – Como criar uma trigger para um intex no elasticsearch para salvar o estado anterior antes de um update

Olá, estou criando uma solução que irá utilizar o ElasticSearch como banco de dados não relacional. Na solução eu quero controlar o histórico de um documento como no exemplo abaixo (esse exemplo não está usando o elasticsearch ainda, é apenas um exemplo das funções de um repositório):

// exemplo de collection de dados e collection de snapshots referentes a uma entity

const users = {}, users_snapshots = {}

const getUser = (_id) => users(_id)

const newUser = (user = {}, _ctor) => {
  const _id = Date.now() // so pra gerar id's diferentes...
  users(_id) = { ...user, _id, _ctor, _created: new Date() }
  return users(_id)
}

const updateUser = (_id, _ctor, changes = {}) => {
  const old = users(_id)
  if(old) {
    users(_id) = { ...old, ...changes, _ctor, _updated: new Date() }
    if(!users_snapshots(_id)) users_snapshots(_id) = ()
    users_snapshots.push({ ...old })
    return users(_id)
  }
  throw new Error(`can't update user with _id: ${_id}. not found`)
}

const disableUser = (_id, _ctor) => {
  const old = users(_id)
  if(old && !old._deleted) {
    users(_id) = { ...old, _ctor, _deleted: new Date() }
    users_snapshots.push({ ...old })
    return users(_id)
  }
  throw new Error(`can't disable user with _id: ${_id}. not found`)
}

const enableUser = (_id, _ctor) => {
  const old = user(_id)
  if(old && old._deleted) {
    users(_id) = { ...old, _ctor, _deleted: null }
    users_snapshots.push({ ...old })
    return users(_id)
  }
  throw new Error(`can't enable user with _id: ${_id}. not found`)
}

const searchUser = (filter = () => 1, offset = 0, limit = 50) => Object
  .entries(users)
  .filter(filter)
  .slice(offset, offset + limit)
  .map(item => ({ ...item })


const searchUserSnapshots = (_id, filter = () => 1, offset = 0, limit = 50) => Object
  .entries(users_snapshots(_id) || ())
  .filter(filter)
  .slice(offset, offset + limit)
  .map(item => ({ ...item })

O exemplo acima seria uma estrutura que sempre que eu faço uma atualização em um documento eu salvo um snapshot desse documento. A ideia é que eu mantenha um histórico dos dados de forma que o usuário possa fazer rollback’s ou visualizar qual usuário fez uma modificação (pela propriedade _ctor).

Hoje eu consigo fazer essa geração de estados antigos de um dado em bancos relacionais usando triggers do tipo AFTER UPDATE e no mongodb usando pre-hooks no mongoose. Como preciso da performance que o ElasticSearch pode me prover, eu gostaria de também ter o comportamento acima para esse banco.

Alguém poderia me dizer se consigo criar alguma trigger (como nos bancos relacionais) ou se eu terei que implementar manualmente como está no exemplo acima?