Множественное исключение с помощью aws cloudsearch

Мне нужно реализовать службу, которая будет возвращать список элементов, отсортированных случайным образом, но исключая набор известных элементов.

У меня есть индекс в aws cloudsearch с этими элементами в документах, и я думал об использовании выражения для их случайной сортировки и использовании фильтра с использованием чего-то вроде (not (_id: [123, 32, 321, 456])), чтобы исключить элементы Я не хочу. Но в моем списке исключений могут быть тысячи и тысячи элементов.

Поддерживает ли это выражение такой объем данных?


person Luiz Guilherme    schedule 07.05.2015    source источник


Ответы (3)


Нет, он не поддерживает «тысячи и тысячи». Проблема в том, что запросы — это GET-запросы, а серверы имеют ограничения на длину URL-адреса.

Для CloudSearch это ограничение составляет 5532 символа; выходите за рамки этого, и вы получите сообщение об ошибке с кодом состояния HTTP 413 FULL HEAD. Я определил это экспериментально, отправив запросы в CloudSearch, где я изменил длину строки запроса; Я нигде не вижу этого в их документах.

person alexroussos    schedule 08.05.2015

Хотя @alexroussos прав в том, что вы ограничены размером запроса GET, это неправда, что вы не можете обойти это ограничение, поскольку CloudSearch также принимает запросы через POST.

Из документов CloudSearch:

Максимальный размер поискового запроса, отправленного через GET, составляет 8190 байт, включая метод HTTP, URI и версию протокола. Вы можете отправлять большие запросы, используя HTTP POST; однако имейте в виду, что обработка больших и сложных запросов занимает больше времени и, скорее всего, истечет время ожидания. Дополнительные сведения см. в разделе Настройка производительности поисковых запросов в Amazon CloudSearch.

person MikeFHay    schedule 13.07.2016

Просто чтобы добавить к тому, что сказал @MikeFHay, хотя CloudSearch действительно принимает POST, это не совсем легко для вас. AWS SDK (по крайней мере, для Java) не использует POST и, похоже, не будет поддерживаться в ближайшее время. Следующее не будет объединено, потому что код cloudsearch aws sdk генерируется автоматически, и они говорят, что добавить эту функцию сложно.

Запрос на добавление POST

На github есть еще одна библиотека, которую мы разветвили и модифицировали, чтобы использовать POST вместо GET для поисковых запросов. Для всех, кто заинтересован:

клиентская библиотека облачного поиска

person Mark Kurkowski    schedule 10.08.2016