多租户Algolia指数

时间:2016-12-15 15:42:15

标签: algolia

我想通过他们的数据向我的用户提供全文搜索 - 并确保他们只能访问他们拥有的数据。是否有任何模式允许在Algolia上做到这一点?我所考虑的解决方案似乎都不合适,所以我想知道我是否忽略了其他一些选择。

我们可以在一个单独的Algolia应用程序中托管每个用户的数据,这样每个API密钥只能访问相关数据,但很快就会变得无法负担,因为许多人会达到10000个记录限制。 / p>

我们可以在单独的索引中托管每个用户的数据并使用团队索引限制,但似乎没有用于管理这些数据的API,而且无论如何都需要为每个客户提供Algolia帐户,这似乎就像滥用服务一样(我们可以在我们的域名上生成电子邮件地址)。

最后,我们可以使用某些userId过滤查询以仅检索相关数据,但这不安全,因为有人可以使用apikey查询没有过滤器的algolia。 我们可以代理algolia调用来注入过滤器和api密钥 - 但是执行的惩罚可能很高。

还有其他建议吗?谢谢!

1 个答案:

答案 0 :(得分:3)

我在Algolia的rayrutjes得到了一个很好的答案,所以我将它贴在这里以防万一:

  

您的用例的最佳方法是使用我们称之为生成的API密钥。以下是JavaScript客户端的文档:https://www.algolia.com/doc/api-client/javascript/api-keys/#generate-key

     

用法非常简单,您可以根据搜索API密钥+一些其他查询参数动态生成API密钥。

     

生成的API密钥可以像标准搜索API密钥一样使用,区别在于它可以作用于给定的参数集。

     

请注意,生成这样的作用域API密钥不需要实际调用API。

     

还要确保在后端生成那些作用域的API密钥,因为在这种情况下,您不希望公开用于生成的搜索API密钥。