2015-05-07 32 views
0

我需要实现一个服务,该服务将返回随机排序的项目列表,但不包括一组已知项目。使用aws cloudsearch进行多个排除

我有一个索引在aws cloudsearch与这些项目在文件中,并正在考虑使用一个表达式随机排序,并使用过滤器使用类似(不(_id:[123,32,321,456]))排除我不想要的项目。但是我的排除清单可能有成千上万的项目。

此表达式是否支持这一数据量?

回答

0

不,它不支持'成千上万'。问题是查询是GET请求,服务器对URL的长度有限制。

对于CloudSearch,该限制似乎为5532个字符;超出这个范围,你会在HTTP状态码413 FULL HEAD上得到一个错误。我通过向CloudSearch发出请求进行了实验性的确定,其中我更改了查询字符串的长度;我没有在任何地方看到它们的文档。

0

虽然@alexroussos是正确的,您受限于GET请求的大小,但您无法绕过该限制,因为CloudSearch也通过POST接受查询。

CloudSearch docs

通过GET提交的搜索请求的最大大小是8190个字节,包括HTTP方法,URI,和协议版本。您可以使用HTTP POST提交更大的请求;但是,请记住,大型复杂请求需要更长时间才能处理,并且更有可能会超时。有关更多信息,请参阅在Amazon CloudSearch中调整搜索请求性能。

0

只是为了增加@MikeFHay所说的,而CloudSearch确实接受POST,这对您来说并不是那么简单。 AWS SDK(至少对于Java)不使用POST,看起来它不会很快被支持。以下内容不会被合并,因为cloudsearch aws sdk代码是自动生成的,并且他们说这是一个难以添加的功能。

Pull Request to add POST

还有GitHub上另一个库,我们分叉和修改,以用木桩,而不是获取搜索请求。对于任何感兴趣的人:

cloudsearch client library

相关问题