2015-05-07 33 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

相關問題