【发布时间】:2019-10-22 05:30:36
【问题描述】:
我最近开始使用 Elasticsearch,并且正在通过 Spring Data Elasticsearch 将一些数据持久化到其中。
我对 NoSQL 数据库比较陌生。
我想知道为用户建模审核日志的最佳方式。
目前我看到了两种方法。
第一个是为每个日志条目创建一个文档。
类似的东西
@Document(indexName = "user_audit_log", type = "UserAuditLog")
public class UserAuditLog {
@Id
private String uuid;
private Long userID;
private String action;
private String original;
private String newValue;
private OffsetDateTime timestamp;
}
并以与 RDBMS 类似的方式写入条目。我在这种方法中看到的主要优点是无需担心写入并发。
第二种方法是每个用户拥有一个文档。并且日志条目被放置在里面的列表中。
类似的东西。
public class UserAuditLogEntry {
private String action;
private String original;
private String newValue;
private OffsetDateTime timestamp;
}
@Document(indexName = "user_audit_log", type = "UserAuditLog")
public class UserAuditLog {
@Id
private Long userID;
private List<UserAuditLogEntry> auditLogEntries;
}
文档必须加载,auditLogEntries 集合需要更新,整个模型必须再次持久化。
我能想到的主要缺点是需要并发写保护。
弹性搜索中哪一个是最佳实践?
【问题讨论】:
标签: java elasticsearch data-modeling spring-data-elasticsearch