假设我有5个表,分别是groups
、posts
、groups_posts
、post_comments
和posts_votes
。
groups
表的字段为user_id
、name
和description
,posts
的字段为user_id
和comment
groups
和posts
之间的关系是MANY_2_MANY,所以每个帖子可以属于多个组,每个组可以包含0-*个帖子。这就是表groups_posts
所做的事情。
post_comments
表包含以下字段:text
、post_id
、user_id
、added_at
(date)、total_comments
、total_votes
posts_votes
表包含以下字段:post_id
、user_id
和vote_at
(date)
我想在Elastic Search中对这些结构进行建模。我需要从用户组(用户可以属于0-*组)中快速搜索过去12小时内特定用户的最受欢迎的帖子的主要原因是基于此时间量的帖子评论和帖子投票的总和。
你能告诉我如何有效地将其映射到Elastic搜索索引上吗?
发布于 2015-06-11 03:29:31
我想你必须做出一些决定。
首先,您可以为每天创建一个索引,以便在运行当天的查询时只搜索一个索引。
因为我们在elasticsearch中没有joins,所以你需要将你的数据相关数据聚合在一起,例如把所有与用户相关的数据放在一起,这样你的数据就会是这样的:
[
{
"user_id":123,
"groups": [
{
"name":"my group",
"posts_by_user":[ // only comments by this user
{
"content": "foo bar baz",
"votes":5
},
{
"content": "bar baz quux",
"votes": 43
},
... other posts by this user in this group
]
},
... other groups
]
},
... other users
也是:阅读这个:https://www.elastic.co/guide/en/elasticsearch/guide/current/modeling-your-data.html
https://stackoverflow.com/questions/30762479
复制相似问题