0

特定のインデックスのレコードをフェッチしようとしていますが、呼び出しごとにデフォルトの 10 レコードを取得できます。

ただし、レコードのフィルタリングと制限を行うことができるように、追加の本文パラメーターも渡したいと思います。

このリンクをたどった後、私が使用しているコードは次のとおりです。

    body = '{size:100}'
    payload_hash = OpenSSL::Digest.new("sha256").hexdigest(body)

    url = "https://myhost/index_name/_search"
    signer = Aws::Sigv4::Signer.new(
      service: 'es',
      region: 'us-west-1',
      access_key_id: 'access_key',
      secret_access_key: 'secret_key'
    )

    uri
     = URI(url)

    t = Time.now.utc
    amzdate = t.strftime('%Y%m%dT%H%M%SZ')
    datestamp = t.strftime('%Y%m%d')

    headers = {
      "host"=>'myhost',
      "x-amz-date" => amzdate,
      "x-amz-content-sha256" => body
    }

    signature = signer.sign_request(
      http_method: 'POST',
      url: url,
      headers: headers,
      body: body
    )


    require 'uri'
    require 'net/http'

    url = URI("https://myhost/index_name/_search")

    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE

    request = Net::HTTP::Post.new(url, 'size' => '100'})
    request["host"] = signature.headers['host']
    request["x-amz-content-sha256"] = signature.headers['x-amz-content-sha256']
    request["x-amz-date"] = signature.headers['x-amz-date']
    request["authorization"] = signature.headers["authorization"]
    response = http.request(request)
    result =  response.read_body
    result = JSON.parse(result)
    result["hits"]["hits"].count

私は常に10レコードしか取得していません。ネットhttpのドキュメントもたくさん読みました。ここで何が間違っているのかわかりません。

4

1 に答える 1