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,非常感谢您分享自己的经验教训。非常有帮助!干杯,乔尔