【发布时间】:2016-03-14 14:47:21
【问题描述】:
我的 MySQL 数据库中有两个模型:Users 和 Posts
users 具有地理位置属性(纬度/经度)
posts 只是有一个正文。
我想使用 Elasticsearch 查找与文本字符串匹配的所有帖子 plus 使用用户的位置作为过滤器。问题是——用户的位置总是在变化(当人们在城市里走动时)。我会经常更新每个用户的纬度/经度。
这是我目前的解决方案:
索引
posts并在每个中都有一个地理位置属性 文档。当用户更改位置时,运行弹性搜索批处理 更新该用户的所有帖子,并修改地理位置属性 在那些文件上。
显然,这不是一个可扩展的解决方案——如果用户有 2000 个帖子并在城市中四处走动怎么办?我必须每分钟更新 2000 个文档。
有没有办法将帖子“关系映射”到用户的对象并将其用作过滤器,这样当位置发生变化时,我只需要更新该用户的对象而不是他的所有帖子?
【问题讨论】:
-
您能否说明您是仅搜索给定位置附近用户的帖子,还是搜索给定位置附近任何用户的任何帖子?
-
@Val 我想搜索帖子(匹配正文),但在任何给定时间(实时)按用户的位置进行过滤。用户的位置总是在变化。
-
好的,用户 X 的所有帖子将始终位于该用户当前所在的位置,而不是他创建帖子时所在的位置,对吧?
-
@val - 对 - 他不在的地方(不是在创建帖子时)
-
谢谢,帖子有一个
user_id字段,其中包含发帖用户的ID,对吧?另一个问题是您的查询是否可能返回来自给定位置周围的不同用户的帖子(+ 由正文过滤)?
标签: elasticsearch lucene