elasticsearch 设置ElasticSearch以搜索每个客户的最佳方法';s仅限数据,elasticsearch,architecture,elasticsearch,Architecture" /> elasticsearch 设置ElasticSearch以搜索每个客户的最佳方法';s仅限数据,elasticsearch,architecture,elasticsearch,Architecture" />

elasticsearch 设置ElasticSearch以搜索每个客户的最佳方法';s仅限数据

elasticsearch 设置ElasticSearch以搜索每个客户的最佳方法';s仅限数据,elasticsearch,architecture,elasticsearch,Architecture,我们有一个SAAS产品,公司在其中创建帐户并填充自己的私有数据。我们正在考虑使用ElasticSearch来允许客户在我们的系统中搜索他们自己的所有数据 例如,我们有一个自由文本搜索,用户可以键入任何内容,API将返回多种不同类型的对象。例如,他们键入John,API会为与包含John的名字或包含John的电子邮件相匹配的用户返回用户对象。或者它也可能返回团队名称与John匹配的团队对象(例如,John的团队)等 因此,我的问题是: ElasticSearch是否是一个明智的选择,我们希望从 概

我们有一个SAAS产品,公司在其中创建帐户并填充自己的私有数据。我们正在考虑使用ElasticSearch来允许客户在我们的系统中搜索他们自己的所有数据

例如,我们有一个自由文本搜索,用户可以键入任何内容,API将返回多种不同类型的对象。例如,他们键入
John
,API会为与包含
John
的名字或包含
John
的电子邮件相匹配的用户返回用户对象。或者它也可能返回团队名称与John匹配的团队对象(例如,
John的团队
)等

因此,我的问题是:

  • ElasticSearch是否是一个明智的选择,我们希望从 概念视角

  • 如果我们使用ElasticSearch,结果会是什么 为数据编制索引的最佳方法,这样我们就可以在所有数据中搜索 特定客户?每个客户都有自己的索引吗

  • 关于如何使ElasticSearch与数据库(DynamoDB)中的数据保持同步,有什么提示吗?如果我们为客户的数据编制索引,然后在数据发生变化时对其进行更新,那么也可以按计划重新编制数据索引吗


  • 谢谢

    我将尝试根据自己使用弹性搜索分离客户数据的经验提供一般答案:

  • 如果您想快速搜索大量数据,ES始终是一个非常好的解决方案—它附带了辅助数据存储的成本,您必须与数据库保持同步

  • 在一个索引中不能有不同的数据类型,因此,情况可能是为每个数据类型和客户创建一个索引(小心,索引会带来开销-避免创建太多而数据太少)-或者,您可以为每种数据类型创建一个索引,并向数据中添加一个属性,然后您可以使用例如客户编号对其进行过滤。 为了从弹性搜索中获益,您必须尽可能多地使用您的数据

  • 正如在1中提到的,你需要保持两者的同步-有很多方法可以做到这一点。例如,我们使用事件驱动的方法将关键更新尽快推送到elasticsearch中(请小心:这不是SQL-因此当您需要读写安全时,您总是会遇到一些并发问题)。对于非高度关键的数据,我们使用定期更新的作业。当您为具有相同id的文档编制索引时,它将得到完全更新


  • 希望这有帮助,请随意提问。

    我将尝试根据自己使用弹性搜索分离客户数据的经验提供一般答案:

  • 如果您想快速搜索大量数据,ES始终是一个非常好的解决方案—它附带了辅助数据存储的成本,您必须与数据库保持同步

  • 在一个索引中不能有不同的数据类型,因此,情况可能是为每个数据类型和客户创建一个索引(小心,索引会带来开销-避免创建太多而数据太少)-或者,您可以为每种数据类型创建一个索引,并向数据中添加一个属性,然后您可以使用例如客户编号对其进行过滤。 为了从弹性搜索中获益,您必须尽可能多地使用您的数据

  • 正如在1中提到的,你需要保持两者的同步-有很多方法可以做到这一点。例如,我们使用事件驱动的方法将关键更新尽快推送到elasticsearch中(请小心:这不是SQL-因此当您需要读写安全时,您总是会遇到一些并发问题)。对于非高度关键的数据,我们使用定期更新的作业。当您为具有相同id的文档编制索引时,它将得到完全更新


  • 希望这有帮助,请随意提问。

    太棒了,非常感谢您分享自己的经验教训。非常有帮助!干杯,JoelAwesome,非常感谢您分享自己的经验教训。非常有帮助!干杯,乔尔