Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在关系数据库和非关系数据库之间同步分页_Mysql_Database_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Pagination_Non Relational Database - Fatal编程技术网 elasticsearch,pagination,non-relational-database,Mysql,Database,elasticsearch,Pagination,Non Relational Database" /> elasticsearch,pagination,non-relational-database,Mysql,Database,elasticsearch,Pagination,Non Relational Database" />

Mysql 在关系数据库和非关系数据库之间同步分页

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作为我的主数据库,我将一些数据同步到elasticsearch,以利用模糊搜索和聚合等功能。然而,这个问题可以应用于关系数据库和非关系数据库,并且可以耦合使用

当用户搜索某个内容时,我对elastic进行查询,获取ID(mysql中的主键),然后对mysql数据库进行另一次查询,在这里我根据elastic返回的ID进行过滤。我使用这种方法是因为您经常需要从关系数据库加载一些额外的数据,而在基于文档的elastic中维护这些关系是非常困难的(例如,用注释加载用户)

问题是,相同的过滤器不会应用于弹性查询和mysql查询。在上面的示例中,如果您需要按某个用户参数过滤注释,该过滤器将应用于mysql查询,但不是弹性的。若不应用相同的过滤器,分页将不匹配-mysql中的第二页在elastic中可能是第四页。如果我从elastic获取所有ID(无分页),我担心响应时间长,集群失败+如果没有scroll api,您无法从elastic获取超过10K的记录


这里我需要一个概念性的解决方案,而不是实际的查询示例。请随意提出完全不同的方法。另外,我不需要完美的分页匹配,因为mysql无论如何都会进行分页。如果elastic需要更多的记录,没关系,我只是不想负担太重。

恐怕对于您解释的问题没有通用的解决方案。它随您的响应时间期望而变化;数据的大小等

比如说,

  • 如果您可以确保连接数据的一侧要小得多,那么您可以更改连接方向;首先在mySQL上执行查询,然后在ES中执行基于id的术语搜索

  • 根据查询的复杂程度和您正在利用的ES的其他功能,考虑使用数据库嵌入式搜索


恐怕您所解释的问题没有通用的解决方案。它随您的响应时间期望而变化;数据的大小等

比如说,

  • 如果您可以确保连接数据的一侧要小得多,那么您可以更改连接方向;首先在mySQL上执行查询,然后在ES中执行基于id的术语搜索

  • 根据查询的复杂程度和您正在利用的ES的其他功能,考虑使用数据库嵌入式搜索


您是否尝试过Logstash,这是一个保持elastic和mysql同步的好工具。然而,我看不出这篇文章如何能帮助mi解决分页问题。假设你有帖子,并且你对任何帖子都有id相关的评论。你对帖子有一个弹性seqarch,对评论有一个单独的弹性搜索(这给了你一个内部连接,也给了帖子)在这两个搜索结果上,您创建一个联合,并获得搜索匹配的所有帖子和评论。另一种方法是使用Logslash并使用评论和帖子作为elastic searcrh的基础,它允许从不同的系统收集许多源。您是否尝试过Logstash这一保持elastic和mysql同步的伟大工具。然而,我看不出这篇文章如何能帮助mi解决分页问题。假设你有帖子,并且你对任何帖子都有id相关的评论。你对帖子有一个弹性seqarch,对评论有一个单独的弹性搜索(这给了你一个内部连接,也给了帖子)在这两个搜索结果上,您创建一个联合,并获得搜索匹配的所有帖子和评论。另一种方法是使用Logslash并使用评论和帖子作为弹性searcrh的基础,它允许从不同的系统收集许多来源。