Mysql 在关系数据库和非关系数据库之间同步分页
我使用mysql作为我的主数据库,我将一些数据同步到elasticsearch,以利用模糊搜索和聚合等功能。然而,这个问题可以应用于关系数据库和非关系数据库,并且可以耦合使用 当用户搜索某个内容时,我对elastic进行查询,获取ID(mysql中的主键),然后对mysql数据库进行另一次查询,在这里我根据elastic返回的ID进行过滤。我使用这种方法是因为您经常需要从关系数据库加载一些额外的数据,而在基于文档的elastic中维护这些关系是非常困难的(例如,用注释加载用户) 问题是,相同的过滤器不会应用于弹性查询和mysql查询。在上面的示例中,如果您需要按某个用户参数过滤注释,该过滤器将应用于mysql查询,但不是弹性的。若不应用相同的过滤器,分页将不匹配-mysql中的第二页在elastic中可能是第四页。如果我从elastic获取所有ID(无分页),我担心响应时间长,集群失败+如果没有scroll api,您无法从elastic获取超过10K的记录Mysql 在关系数据库和非关系数据库之间同步分页,mysql,database,elasticsearch,pagination,non-relational-database,Mysql,Database,elasticsearch,Pagination,Non Relational Database,我使用mysql作为我的主数据库,我将一些数据同步到elasticsearch,以利用模糊搜索和聚合等功能。然而,这个问题可以应用于关系数据库和非关系数据库,并且可以耦合使用 当用户搜索某个内容时,我对elastic进行查询,获取ID(mysql中的主键),然后对mysql数据库进行另一次查询,在这里我根据elastic返回的ID进行过滤。我使用这种方法是因为您经常需要从关系数据库加载一些额外的数据,而在基于文档的elastic中维护这些关系是非常困难的(例如,用注释加载用户) 问题是,相同的过
这里我需要一个概念性的解决方案,而不是实际的查询示例。请随意提出完全不同的方法。另外,我不需要完美的分页匹配,因为mysql无论如何都会进行分页。如果elastic需要更多的记录,没关系,我只是不想负担太重。恐怕对于您解释的问题没有通用的解决方案。它随您的响应时间期望而变化;数据的大小等 比如说,
- 如果您可以确保连接数据的一侧要小得多,那么您可以更改连接方向;首先在mySQL上执行查询,然后在ES中执行基于id的术语搜索
- 根据查询的复杂程度和您正在利用的ES的其他功能,考虑使用数据库嵌入式搜索
- 如果您可以确保连接数据的一侧要小得多,那么您可以更改连接方向;首先在mySQL上执行查询,然后在ES中执行基于id的术语搜索
- 根据查询的复杂程度和您正在利用的ES的其他功能,考虑使用数据库嵌入式搜索