我目前有一份定期修改的文档,我希望通过保留文档的每个旧版本来跟踪文档。因此,如果文档A具有我想要的摘要和更新日期,则在每次更新后,保留先前版本及其更新数据。
问题在于我不确定如何有效地做到这一点:
...{
Title: A
Summary: {update_date:content, update_date:content, ...}
}
问题是如果我将密钥作为值,那么自动生成的模式将把所有日期作为可能的密钥。这不是你想要的东西。
所以我的问题是在ElasticSearch中按日期跟踪所有修订的最有效方法是什么?
答案 0 :(得分:3)
就像与构建索引相关的所有内容一样,它在很大程度上取决于您对数据的处理方式。
通常,保留过去的修订是为了审计目的,因此它是一个完全不同的查询流程。我可能会为活动文档保留一个索引,并为修订版保留一个单独的索引(可能有日期分区)。
每次更新都需要更新实时文档并在修订索引中插入新文档。
还应该注意ElasticSearch有一些native support for versioning,它可能适合你。我个人使用ES作为索引而不是数据存储,所以我倾向于丢弃索引并经常重建,这会导致历史丢失。