#powershell #elasticsearch
#powershell #elasticsearch
Вопрос:
Я создаю сценарий PowerShell для получения большого количества файлов из общедоступной службы (которой я не владею). Мне нужно использовать scroll API, чтобы получить все нужные мне файлы, но я столкнулся с проблемой: Elasticsearch по-разному реагирует на postman и PowerShell при предоставлении scroll_id.
Я воссоздал эти шаги вручную в postman без каких-либо проблем.
Function scrollBody ($scrollID) {
$scrollBody = @"
{
"scroll": "2m",
"scroll_id": "$scrollId"
}
"@
return $scrollBody
}
$body = (scrollBody `
-scrollID $scrollID
| ConvertFrom-Json)
$scrollUri = $ServerUri "/_search/scroll"
$response = Invoke-WebRequest `
-Method GET `
-Uri $scrollUri `
-ContentType 'application/json' `
-Body $body `
| ConvertFrom-Json
У меня есть рабочий идентификатор прокрутки из другой части кода, но я протестировал идентификаторы, используя postman, и они работают нормально.
Я подозреваю, что именно так я предоставляю тело, но я застрял с этой ошибкой:
{
"error": {
"root_cause": [
{
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: scrollId is missing;"
}
],
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: scrollId is missing;"
},
"status": 400
}
Заранее спасибо
Комментарии:
1. Можете ли вы предоставить, какую именно службу вы пытаетесь запросить?
2. @AndrewRyanDavis да, это общедоступная служба, которая также не требует аутентификации. distribution.virk.dk/offentliggoerelser/_search
Ответ №1:
Я не могу проверить, но, похоже, у вас синтаксическая ошибка при вызове вашей функции для создания объекта с помощью scrollID.
Вы можете просто добавить это в хэш запроса, и его будет немного легче читать. Обратные ссылки являются чем-то вроде антишаблона.
$serverUri = 'http://distribution.virk.dk/offentliggoerelser/_search/scroll'
$iwrParams = @{
'Uri' = $serverUri
'Method' = 'GET'
'ContentType' = 'applications/json'
'UseBasicParsing' = $true
'Body' = @{
'scroll' = '2m'
'scroll_id' = $scrollId
}
}
Invoke-WebRequest @iwrParams
Комментарии:
1. Разве параметры не должны содержать идентификатор прокрутки?
2. Да, извините, я по ошибке удалил его во время тестирования, потому что я не знаю
$scrollId
значения. Похоже, что это получает ответы, хотя теперь, когда я тестирую по указанному вами URL-адресу.