1

I'm looking at using Solr or ElasticSearch for a few clientside javascript apps. In one instance I could call the API directly.

I'm pretty new to this concept and one of the first things that came to mind is how do you avoid security related issues like people issuing delete commands against the API? Is it appropriate to hide the search API behind a layer, like a small PHP or Sinatra API to that client interacts with?

Thanks!

4

2 回答 2

3

将搜索 API 隐藏在层后面是否合适,例如与客户端交互的小型 PHP 或 Sinatra API?

如果您关心安全性,那么答案无疑是 -的。
NodeJS 非常适合这类事情:授权客户端请求,将查询发送到 elasticsearch/solr,然后将其发送回客户端(在返回的路上有或没有数据处理)。如果您有很多连接,PHP 不太适合(nodejs 非常适合)。


在 elasticsearch 的博客中查看本文的第二部分。有一个很好的代理说明,以及代理的简单Ruby 代码

那里的相关报价:

这一切都可以通过利用 elasticsearch 公开 HTTP API 的事实来实现。通过在其前面放置一个代理,我们可以将身份验证和授权例程隔离到单独的组件中,从而有效地分解堆栈中的职责并允许对各个部分进行更好的可测试性。

于 2012-10-11T20:48:39.637 回答
1

您可以添加一个充当代理的层,但最好的方法是使用复制(两个或更多实例 - http://wiki.apache.org/solr/SolrReplication

这样,您始终拥有一个有效、强大且通常是私有的主索引,您可以在其上添加、删除和做任何您想做的事情,以及一个从属索引,它只是主索引的副本,并且只提供查询 API。

于 2012-10-11T20:47:29.997 回答