使用 aws cloudsearch 进行多重排除
Multiple exclusion with aws cloudsearch
我需要实施一项服务,该服务将 return 随机排序的项目列表,但不包括一组已知项目。
我在 aws cloudsearch 中有一个索引,其中包含文档中的这些项目,我正在考虑使用表达式对它们进行随机排序,并使用类似 (not (_id: [123, 32, 321, 456]) ) 排除我不想要的项目。但是我的排除列表可能有成千上万的项目。
这个表达式支持这个数据量吗?
不,它不支持'thousands and thousands'。问题是查询是 GET 请求,服务器对 URL 的长度有限制。
对于 CloudSearch,该限制似乎是 5532 个字符;超出此范围,您将收到 HTTP 状态代码 413 FULL HEAD
的错误。我通过向 CloudSearch 发出请求来实验性地确定了这一点,我在 CloudSearch 中更改了查询字符串的长度;我在他们的文档中没有看到它。
虽然@alexroussos 是正确的,您受到 GET 请求大小的限制,但您不能绕过该限制是不正确的,因为 CloudSearch 也接受通过 POST 的查询。
The maximum size of a search request submitted via GET is 8190 bytes, including the HTTP method, URI, and protocol version. You can submit larger requests using HTTP POST; however, keep in mind that large, complex requests take longer to process and are more likely to time out. For more information, see Tuning Search Request Performance in Amazon CloudSearch.
补充一下@MikeFHay 所说的内容,虽然 CloudSearch 确实接受 POST,但它对您来说并不容易。 AWS SDK(至少对于 Java)不使用 POST,并且看起来它不会很快得到支持。下面就不合并了,因为cloudsearch aws sdk代码是自动生成的,他们说这是一个很难添加的功能。
github 上还有另一个库,我们对其进行了分叉和修改,以使用 POST 而不是 GET 来进行搜索请求。对于任何感兴趣的人:
我需要实施一项服务,该服务将 return 随机排序的项目列表,但不包括一组已知项目。
我在 aws cloudsearch 中有一个索引,其中包含文档中的这些项目,我正在考虑使用表达式对它们进行随机排序,并使用类似 (not (_id: [123, 32, 321, 456]) ) 排除我不想要的项目。但是我的排除列表可能有成千上万的项目。
这个表达式支持这个数据量吗?
不,它不支持'thousands and thousands'。问题是查询是 GET 请求,服务器对 URL 的长度有限制。
对于 CloudSearch,该限制似乎是 5532 个字符;超出此范围,您将收到 HTTP 状态代码 413 FULL HEAD
的错误。我通过向 CloudSearch 发出请求来实验性地确定了这一点,我在 CloudSearch 中更改了查询字符串的长度;我在他们的文档中没有看到它。
虽然@alexroussos 是正确的,您受到 GET 请求大小的限制,但您不能绕过该限制是不正确的,因为 CloudSearch 也接受通过 POST 的查询。
The maximum size of a search request submitted via GET is 8190 bytes, including the HTTP method, URI, and protocol version. You can submit larger requests using HTTP POST; however, keep in mind that large, complex requests take longer to process and are more likely to time out. For more information, see Tuning Search Request Performance in Amazon CloudSearch.
补充一下@MikeFHay 所说的内容,虽然 CloudSearch 确实接受 POST,但它对您来说并不容易。 AWS SDK(至少对于 Java)不使用 POST,并且看起来它不会很快得到支持。下面就不合并了,因为cloudsearch aws sdk代码是自动生成的,他们说这是一个很难添加的功能。
github 上还有另一个库,我们对其进行了分叉和修改,以使用 POST 而不是 GET 来进行搜索请求。对于任何感兴趣的人: