Неверный запрос на AWS ElasticSearch

Я пытаюсь подключиться к контролируемому IAM домену ElasticSearch, я создал запрос и подписал его, и все отлично работает для метода GET, но при методе POST я получаю 400 Bad Request

Это явно связано с полезной нагрузкой. Если я предоставлю пустую строку полезной нагрузки (""), она будет работать соответствующим образом, но все остальное приведет к неправильному запросу.

Что мне не хватает?

val url = s"https://$host/TEST/article/_search"
val serviceName = "es"
val regionName = "us-east-1"


val request = new DefaultRequest(serviceName)

val payload =
  """{"1":"1"}""".trim
val payloadBytes = payload.getBytes(StandardCharsets.UTF_8)
val payloadStream = new ByteArrayInputStream(payloadBytes)
request.setContent(payloadStream)

val endpointUri = URI.create(url)
request.setEndpoint(endpointUri)
request.setHttpMethod(HttpMethodName.POST)

val credProvider = new EnvironmentVariableCredentialsProvider
val credentials = credProvider.getCredentials

val signer = new AWS4Signer

signer.setRegionName(regionName)
signer.setServiceName(serviceName)

signer.sign(request, credentials)

val context = new ExecutionContext(true)

val clientConfiguration = new ClientConfiguration()
val client = new AmazonHttpClient(clientConfiguration)

val rh = new MyHttpResponseHandler
val eh = new MyErrorHandler

val response =
  client.execute(request, rh , eh, context);

1 ответ

Решение

Примечание: если вы столкнулись с этой проблемой, проверьте фактическое содержание ответа, это может быть результатом несоответствия между индексом и вашим запросом.

Моя проблема заключалась в том, что конкретный запрос, который я использовал, был неподходящим для указанного индекса, в результате чего получилось 400

Другие вопросы по тегам