首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch文档的ACID更新

ElasticSearch文档的ACID更新
EN

Stack Overflow用户
提问于 2019-05-28 19:10:15
回答 1查看 158关注 0票数 0

我现在正在尝试建立一个类似Tinder的系统。在这里,我需要知道哪些牌已经被看到了。

如果我将卡片保存在ElasticSearch中,然后有这样一个文档:

{姓名:大卫,位置:{纬度,纬度},seenFromUsers:[] }

我只是想知道在对象本身中创建一个列表是否有意义。它可能有2000个条目。但是如果我在ElasticSearch中进行更新,那么我总是必须传递所有2000个条目。如果两个用户同时这样做,会不会有一个用户迷路了?如何简单地将另一个ID添加到数组中?这有可能吗?

还有其他的解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-29 21:24:48

另一种解决方案是一种完全不同的方法。相反,如果创建像这样的文档

代码语言:javascript
复制
{
  "name": "David",
  "location": { "lat": ..., "lon": ...},
  "seenFromUsers": ["Laura", "Simone"]
}

在关系中这样思考:

代码语言:javascript
复制
{
  "name": "David",
  "seenBy": "Laura"
}

{
  "name": "David",
  "seenBy": "Simone"
}

这种方法将为您提供更简单的查询,ACID问题也就解决了。新的纵断面图就是新的文档...

这样做的好处是,您将摆脱内部对象,并且更容易向此关系中添加额外的数据:

代码语言:javascript
复制
{
  "name": "David",
  "seenBy": "Laura",
  "timestamp": ...,
  "liked": true
}

{
  "name": "David",
  "seenBy": "Simone",
  "timestamp": ...,
  "liked": false
}

现在你可以对个人资料或双向喜欢/匹配的所有正面喜欢做一个简单的查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56340893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档