我正在使用elasticsearch和gem searchkick在我的应用程序。我有一个事件模型,在那里用户可以点击事件等。
在事件列表中,我有一个过滤器的要求“在过去7天内查看”。我想知道什么是最好的方法来索引数据,使其适当地服务于要求。
一开始我考虑在Event模型ES索引中存储用户ID,如下所示:
Event: {
_id: 1,
user_ids: [1,2,3,4...]
}
但是这会给予我所有的事件视图,而不仅仅是最近7天的。我该如何创建索引数据来适应这种情况呢?
根据评论进行更新,以提供更多背景信息:
以下是一些事件的示例(存储的内容):
[
{
_id: 1,
name: 'Company get together',
start_time: '10:00',
start_date: '2022-10-01',
duration: 3600
...
},
{
_id: 2,
name: 'Company break',
start_time: '00:05',
start_date: '2022-01-01',
duration: 172800
...
},
{
_id: 3,
name: 'Sales webinar',
start_time: '09:00',
start_date: '2022-15-01',
duration: 7200
...
},
...
]
这是一个关于当前事件的例子,如果某个用户点击了这个事件,我们希望在事件模型中记录这个事件,这样我们就可以返回用户在过去7天内点击的事件列表。
如果我们使用这样的结构:
{
_id: 3,
name: 'Sales webinar',
start_time: '09:00',
start_date: '2022-15-01',
duration: 7200,
user_click_ids: [1, 2, 3]
...
}
每次用户单击特定事件时,我们都会将其附加到user_click_ids
,然后我可以使用user_click_ids
返回单击该事件的用户列表(并过滤它以提供当前用户ID)。
但我需要另一个维度,不仅是哪个用户点击了,而且是在过去7天的点击与否。
如何为这种情况创建索引或如何解决此问题?
1条答案
按热度按时间w9apscun1#
也许一个解决方案,使用较少的searchkick,但你可以使用另一个模型来处理这个问题?在我的头上(还没有运行这个):