我正在开发一个在弹性搜索中具有用户数据和在MySQL中具有用户汽车数据的应用程序。
要求:以下特定状态的用户汽车的分页视图
查看
州:纽约
用户ID 1 | UserCar ID 1
用户ID 1 | UserCar ID 2
用户ID 3 | UserCar ID 10
用户ID 4 | UserCar ID 15
单个用户可以拥有任意数量的汽车。
我想到了以下两种方法。
1)从Elastic搜索中获取给定状态的所有用户,然后从MySQL中获取这些用户的所有汽车,然后根据页码发送拆分数据。
2)从弹性搜索中逐个获取用户,然后从MySQL中获取该用户的汽车,直到您到达该页面的记录数为止一直保持工作。
我认为上述两种方法均无效。最好的方法是什么?
答案 0 :(得分:0)
我将从ES获得用户页面(仅是所需的单个页面),然后使用DB中所需的汽车信息(仅是相关汽车)来丰富它。
为了加快汽车充实的第二阶段,我建议您有一个缓存-内存中的完整数据库还是LRU。
因此,您可以从右页的ES中获取信息,并丰富对相关汽车的记忆。这应该是有效的。
答案 1 :(得分:0)
如果要在浏览器上创建用户汽车表,则使用限制和偏移量将这些汽车数据与MYSQL中的用户汽车关系表合并。在这里,我假设您正在使用服务器端数据表。
然后从ES获取特定用户的数据,因为从ES获取数据的速度更快。接下来,从客户端开始,您需要使用JS追加或更新表列。
ES查询应如下所示:
GET /users/_search
{
"query" : {
"constant_score" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}