我和我的团队希望在我们的项目上使用弹性搜索,但是我们有一个要求,我们不想对每个节点使用mysql的本地实例。我们希望使用mysql数据的远程服务器来存储弹性搜索服务正在查询的数据。
因此,想法是每次在ES服务器上添加一个新项目,本地不是添加到本地实例,而是添加到mysql的远程服务器上(我们认为是在amazon上)。对于任何索引的搜索查询,我们希望ES节点查询远程数据库(在RDS实例上)。
我们尝试使用两种口味的river(用于提取数据)和馈线(用于将数据放在RDS实例上).But,我们无法使它与river一起工作。
有人尝试过类似的方法吗?或者有人可以链接到一个博客,这是做这件事的?
我很感谢你的帮助
提前感谢
发布于 2015-03-31 15:32:11
我们用模拟的方法。我们使用Oracle数据库作为主数据存储。
我们使用PLSQL来扁平/转换数据。对于初始加载,我们将数据(记录)添加到"oneshot“表中。数据的更新将被扁平化/转换,并在“更新”表中生成记录。oneshot和update表将映射到Elasticsearch中的单个索引。
ES的初始负载:
Oracle
这些数据将被河流拉出来,例如http://localhost/9200/zoo/animal和http://localhost/9200/zoo/user)
更新
软件->更改数据->Oracle>扁平数据(pl )-记录到animal_update_river表,记录到user_update_river表
更新表还包含一种更改类型(插入、更新或删除)。
河川将轮询update_river表以进行更新,并在Elasticsearch中对数据进行变异(我们使用拉)。经过河流处理后,记录将被删除。
对Elasticsearch的数据更改不会发送给Oracle。对主数据存储的所有更改将由我们自己的业务逻辑软件完成。
我们还将数据写入_spare表(animal_oneshot_river_spare),因为这样可以在没有停机和同步问题的情况下重新加载Elasticsearch (我们在重新加载Elasticsearch之后切换别名)。
https://stackoverflow.com/questions/29371955
复制相似问题