我正在尝试在elasticsearch中建模用户建议系统,该系统考虑了用户喜欢和个人资料。
我有这样的用户结构:
user: {
id: 232344,
location: 'New York',
likes: [4545, 3434, 343]
}
我想根据以下三个概念建议用户:
1)喜欢我的用户。
2)用户喜欢我喜欢的用户。 (类似的位置等)
3)相互喜欢。 (用户类似用户x。用户b喜欢用户x。建议用户a到b,反之亦然。)我在弹性搜索中看过More like this
查询,但我不确定它是否可以考虑所有这些情况。
我如何在elasticsearch查询中建模这些东西,还是应该考虑使用像neo4j这样的图形数据库?
答案 0 :(得分:1)
1)喜欢我的用户。假设我的ID为1
{
"query": {
"term" : { "likes" : 1 }
}
}
2)检查more like this api。给定文档ID和一组字段,它响应给定的文档类似的文档。有很多选项,所以我建议您阅读文档,看看它是否适合您的使用案例。
3)相互喜欢:假设我是a
,我喜欢这些用户[1, 3, 5]
。如果b
也喜欢其中一个ID,则此查询将返回b
。
{
"query": {
"term" : { "likes" : [1, 3, 5] }
}
}