我正在开发一个具有用户、弹性搜索中的数据和用户在MySQL中的cars数据的应用程序。
要求:用户的分页视图,特定状态的汽车,如下所示
视图
State:纽约
用户id 1 UserCar id 1
用户id 1 UserCar id 2
用户id 3 UserCar id 10
用户id 4 UserCar id 15
一个用户可以拥有任意数量的汽车。
我想到了以下两种方法。
1)从弹性搜索中获取给定状态下的所有用户,然后从MySQL中获取这些用户的所有车辆,然后根据页面号发送分割数据。
2)从弹性搜索中逐个获取用户,然后从MySQL中获取用户的车辆,并一直进行到达到该页面的记录数为止。
我认为上述两种方法都是低效的。做这件事最好的方法是什么?
发布于 2019-02-24 12:19:54
我会从ES获得用户页面(只需一个页面),然后用DB提供的所需的cars信息来丰富它,只需要相关的汽车。
为了加快汽车浓缩的第二阶段,我建议有一个缓存--无论是内存中的完整DB,还是仅仅是LRU。
因此,一个从正确页面的ES中获取,并在内存中丰富相关的汽车。这应该是有效的。
发布于 2019-02-24 18:06:42
如果您想要在浏览器上创建user cars表,那么使用极限和偏移从MYSQL获取那些cars数据与用户-cars关系表的连接。在这里,我假设您正在使用服务器端datatable。
然后从ES中获取特定用户的数据,因为从ES获取数据更快。接下来,从客户端,您需要使用JS追加或更新表列。
ES查询应如下所示:
GET /users/_search
{
"query" : {
"constant_score" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}https://stackoverflow.com/questions/54851687
复制相似问题