Amazon CloudSearch: можно ли написать запрос, который возвращает все?

Я собрал простую форму поиска с окном поиска и парой фильтров в виде раскрывающихся списков. Все работает так, как вы ожидаете, за исключением того, что я хочу, чтобы поведение было таким, что когда пользователь оставляет все полностью пустым (без поискового запроса, без фильтров), он просто возвращает все (конечно, с разбивкой на страницы).

В настоящее время я добиваюсь этого, обнаруживая этот особый случай и запрашивая мою локальную базу данных, но есть некоторые преимущества в том, чтобы сделать это на 100% с помощью CloudSearch. Есть ли способ создать запрос, который просто возвращает список всех документов с разбивкой на страницы? Другими словами, существует ли эквивалент CloudSearch для «SELECT id FROM x LIMIT n?»

Заранее спасибо! Джо


person Joe    schedule 30.12.2013    source источник


Ответы (3)


См. API поиска. ?q=matchall&q.parser=structured будет соответствовать всем документам.

person user2602740    schedule 21.05.2014
comment
Соответствующая документация docs.aws.amazon. com/cloudsearch/latest/developerguide/ - person russau; 14.03.2015
comment
С конфигурацией по умолчанию AWS возвращает только 10 лучших результатов запроса. Я знаю, что вы можете отредактировать его с помощью параметра размера, но есть ли способ сказать AWS, чтобы он снял ограничение и вернул ВСЕ данные как хиты? Кажется, я не нашел решения... - person welshk91; 29.03.2016
comment
(Для будущих пользователей, выполняющих поиск в Google) Существует ограничение в 10 000 записей, прежде чем вам придется начинать итерацию с помощью курсоров. - person Scuzzy; 16.05.2016

Этим самым простым способом было бы использовать оператор not, например:

?q=собака|-собака

вернет все документы, содержащие «собаку» и не содержащие «собаку». Вам нужно будет перехватить особый случай, как вы уже сделали, и просто заменить комбинацию запроса/не запроса, и вы должны получить все обратно.

person E.J. Brennan    schedule 31.12.2013
comment
Сначала мне пришлось посмеяться над этим ответом. Но хорошо то, что он работает на Test-Search-Console AWS-Interface (где matchall не работает). - person Arne; 17.09.2019
comment
Тесак рассуждения, я должен сказать - person Checo R; 28.01.2020

Для тех, кто ищет ответ, используя boto3.

CLOUD_SEARCH_CLIENT = boto3.client(
    'cloudsearchdomain',
    aws_access_key_id='',
    aws_secret_access_key='',
    region_name='',
    endpoint_url="https://search-your-endpoint-url.amazonaws.com"
)

response = CLOUD_SEARCH_CLIENT.search(
    query="matchall",
    queryParser='structured'
)

print(response)
person Josh Wolff    schedule 17.03.2020