【发布时间】:2017-06-30 15:41:24
【问题描述】:
我有以下架构问题 - 我的应用程序后端是用 Java 编写的,客户端是 AngularJS 编写的。现在我需要将用户输入存储在页面上,以便能够共享和收藏我的应用程序 url 并通过该 url 恢复状态。
我将实现以下方法 - 每次用户通过选择页面上的数据和条件与我的应用程序交互时,我都会将他的所有输入收集到一个复杂的 JSON 文档中,并将该文档存储在 Elasticsearch 中。来自 ES 的此文档的密钥我将发送回客户端应用程序(AngularJS)并基于此密钥我将更新页面 url。例如原始网址如下所示:
http://example.com/some-page
基于来自服务器的密钥,我会将此 url 更新为以下内容:
http://example.com/some-page/analysis/234532453455
234532453455 是 ES 中文档的键。
每次用户将尝试访问以下 url - http://example.com/some-page/analysis/234532453455 AngularJS 应用程序将尝试通过 Java 后端 REST 端点按键 (234532453455) 获取保存的状态。
会有用吗?
另外,我现在在怀疑如何防止 ES 中的文档重复。目前我没有使用 ES 的经验,所以不知道 ES 的哪种方法可以开箱即用。
例如,计算每个 JSON 文档的一些哈希码并将此哈希码存储为文档的键是否是个好主意。所以在存储新文档之前,我可以通过哈希码检查旧文档。性能对我来说也很重要,所以也请考虑到这一点。
【问题讨论】:
标签: json elasticsearch architecture spring-data-elasticsearch