Я пытаюсь получить записи для определенного индекса, я могу получить 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 записей.
Я прочитал много документации для net http тоже. Не знаю, что я здесь делаю не так.