database - 如何使用 ElasticSearch 作为微服务环境中关系结构的搜索引擎
问题描述
我正在开发一个应用程序,它Mysql
为大多数实体使用关系数据库,它是在微服务架构中构建的,每个服务都使用单独的 MYSQL 数据库。
现在,我正在尝试使用弹性搜索作为中间件渠道来实现出版物搜索引擎,以便能够搜索与出版物对象相关的所有实体,即使来自具有不同数据库的不同服务也是如此。
索引发布对象的最佳方法是什么?
- 我有3个选择:
- 创建具有多嵌套对象类型的完整发布类型?
- 问题:
- 来自不同服务的所有实体的复制
- 难以更新,例如在更新指令的情况下
- 使用来自其他对象的所有字段创建不同的发布类型,然后在插入或查找数据时规范化数据。
- 问题:
- 在插入和查找时对数据进行规范化是昂贵的
- 难以维护和更新
- 插入多个分隔类型,类似于关系数据库,然后进行多次查询以找到最终对象,例如,如果我们要通过 user_name 查找发布,则必须先找到用户,然后使用 user_id 查找发布。
- 问题:
- 我们必须进行超过 1 次查询才能获得有效结果
- 使用 has_parent, has_child 关系,但在这种情况下,孩子是出版物,它有多个多对一关系,所以有多个父母。
- 创建具有多嵌套对象类型的完整发布类型?
如果您认为我应该使用不同的技术,我可能会走错方向请分享您的反馈
解决方案
不确定我是否理解正确.. 但如果你只是想让人们搜索出版物实体,那么创建一个包含所需字段的视图将是我的第一个解决方案。你能详细说明一下为什么你想到了elasticsearch吗?
第二:我认为在弹性搜索方面你不应该担心重复。
推荐阅读
- python - 分别从两个列表中提取两个单词之间的字符串
- r - 从 r 中嵌套列表中第一项的总和中减去一个
- python - PYSPARK SQL ODBC 连接
- python - 使用 pysftp 或 Paramiko,如何获得包含属性的目录列表?
- java - 如何在不兼容的设备上使用 android midi USB 堆栈
- git - Git:添加/提交是否应该只在项目的顶级目录中运行?
- c - C:围绕没有其他操作数的变量的括号
- javascript - 模拟 Tableau 的嵌入式悬停工具图
- node.js - Webpack 4 - 找不到模块:无法解析 node_modules
- python - 如何增加python“字节”对象