如何仅显示用户有权访问的结果
How to show only results that user has access to
我的 Python 应用程序的数据库结构与 Instagram 非常相似。我有用户,posts,用户可以互相关注。有public和私人账号
我正在 ElasticSearch 中为这些数据编制索引,到目前为止搜索工作正常。然而,搜索 returns 所有 post 存在一个问题,如果用户有权访问它而不按条件过滤(例如 post 是由另一个拥有私人帐户的用户创建的,并且当前用户没有关注该用户)。
我在 ElasticSearch 中的数据以一种平面格式简单地跨多个索引编制索引,一个索引用于用户,一个用于 posts。
我可以 post 处理 ElasticSearch returns 的结果,并删除当前访问权限无法访问的 posts,但这会向数据库引入额外的查询以检索该用户关注者列表,可能还有黑名单(我不想向也互相屏蔽的用户显示 post)。
我还可以在索引时将每个用户的关注者 ID 列表添加到 ElasticSearch,然后与他们进行匹配,但如果用户有数千个关注者,这些列表将非常庞大,我不确定是否方便将把它们保存在 ElasticSearch 中。
我怎样才能有效地做到这一点?我的堆栈是后端 Python + Flask、PostgreSQL 数据库和 ElasticSearch 作为搜索索引。
也许您已经找到了解决方案...
使用 elastic "terms lookup" 可以解决这个问题,如果你有一个包含你可以过滤的关注者列表的索引,就像你在这里说的:
I can also add list of follower IDs for each user to ElasticSearch
upon indexing and then match against them, but in case where user has
thousands of followers, these lists will be huge, and I am not sure
how convenient it will be to keep them in ElasticSearch.
请注意,有 65536 个字词的限制(但它可以被覆盖),因此如果您的服务没有数百万用户,默认限制就可以了。
我的 Python 应用程序的数据库结构与 Instagram 非常相似。我有用户,posts,用户可以互相关注。有public和私人账号
我正在 ElasticSearch 中为这些数据编制索引,到目前为止搜索工作正常。然而,搜索 returns 所有 post 存在一个问题,如果用户有权访问它而不按条件过滤(例如 post 是由另一个拥有私人帐户的用户创建的,并且当前用户没有关注该用户)。
我在 ElasticSearch 中的数据以一种平面格式简单地跨多个索引编制索引,一个索引用于用户,一个用于 posts。
我可以 post 处理 ElasticSearch returns 的结果,并删除当前访问权限无法访问的 posts,但这会向数据库引入额外的查询以检索该用户关注者列表,可能还有黑名单(我不想向也互相屏蔽的用户显示 post)。
我还可以在索引时将每个用户的关注者 ID 列表添加到 ElasticSearch,然后与他们进行匹配,但如果用户有数千个关注者,这些列表将非常庞大,我不确定是否方便将把它们保存在 ElasticSearch 中。
我怎样才能有效地做到这一点?我的堆栈是后端 Python + Flask、PostgreSQL 数据库和 ElasticSearch 作为搜索索引。
也许您已经找到了解决方案...
使用 elastic "terms lookup" 可以解决这个问题,如果你有一个包含你可以过滤的关注者列表的索引,就像你在这里说的:
I can also add list of follower IDs for each user to ElasticSearch upon indexing and then match against them, but in case where user has thousands of followers, these lists will be huge, and I am not sure how convenient it will be to keep them in ElasticSearch.
请注意,有 65536 个字词的限制(但它可以被覆盖),因此如果您的服务没有数百万用户,默认限制就可以了。