【问题标题】:How To Use ElasticSearch as a search Engine for relational structure in a micro-services envirement如何使用 ElasticSearch 作为微服务环境中关系结构的搜索引擎
【发布时间】:2019-01-14 23:27:56
【问题描述】:

我正在开发一个应用程序,它对大多数实体使用关系数据库 Mysql,它是在微服务架构中构建的,每个服务都使用单独的 MYSQL 数据库。

现在我正在尝试使用弹性搜索作为中间件渠道来实现出版物搜索引擎,以便能够搜索与出版物对象相关的所有实体,即使来自具有不同数据库的不同服务。

索引发布对象的最佳方法是什么?

  • 我有 3 个选项:
    • 创建具有多嵌套对象类型的完整发布类型?
      • 问题:
      • 来自不同服务的所有实体的复制
      • 很难更新,例如在更新指令的情况下
    • 使用来自其他对象的所有字段创建不同的发布类型,然后在插入或查找数据时规范化数据。
      • 问题:
      • 在插入和查找时标准化数据的成本很高
      • 难以维护和更新
    • 插入多个分隔类型,类似于关系数据库,然后进行多次查询以找到最终对象,例如,如果我们要通过 user_name 查找发布,则必须先找到用户,然后使用 user_id 查找发布。
      • 问题:
      • 我们必须进行超过 1 次查询才能获得有效结果
    • 使用 has_parent、has_child 关系,但在这种情况下,孩子是发布者,它有多个多对一关系,因此有多个父母。

我可能走错了方向,如果您认为我应该使用不同的技术,请分享您的反馈

【问题讨论】:

    标签: database elasticsearch nosql microservices search-engine


    【解决方案1】:

    不确定我是否理解正确.. 但如果您只想让人们搜索出版物实体,那么创建包含所需字段的视图将是我的第一个解决方案。 你能详细说明一下为什么你想到了elasticsearch吗?

    秒: 我认为在弹性搜索方面你不应该担心重复。

    【讨论】:

    • 我想使用 elasticsearch 作为中间件漏斗,通过与发布相关的对象(通过 UserName 或 PublicationType)搜索发布。在这种情况下,我们与将在搜索中使用的发布有很多关系,它们可能位于具有不同 mysql 数据库的不同服务中。我希望这可以解释更多,如果仍然不清楚,我可以尝试提供更多示例。谢谢
    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2010-09-22
    • 2023-03-06
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多