powershell elasticsearch不工作,缺少scrollid

jecbmhm3  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(852)

我正在创建一个powershell脚本来从公共服务(我没有任何所有权)获取大量文件。我需要使用scroll api来获取所有需要的文件,但我遇到了一个问题:在提供scroll\u id时,elasticsearch使用postman和powershell的响应不同。
我在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

我从代码的另一部分得到了工作滚动id,但是我已经用postman测试了id,它们工作得很好。
我怀疑这是我提供尸体的方式,但我被这个错误困住了:

{
    "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
}

提前谢谢

sz81bmfz

sz81bmfz1#

我无法进行测试,但在调用函数以生成具有scrollid的对象时,似乎出现了语法错误。
您只需将其添加到请求的散列中,就会更容易阅读。backticks有点反模式。

$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

相关问题