0

IAM에서 제어하는 ​​ElasticSearch 도메인에 연결하려고합니다. 요청을 작성하고 서명했습니다. 모든 메소드가 제대로 작동하지만 POST 메서드에서 400 개의 잘못된 요청이 발생했습니다.AWS ElasticSearch에서 잘못된 요청이 발생했습니다.

이것은 페이로드와 관련이 있습니다. 페이로드 빈 문자열 ("")을 제공하면 적절하게 작동하지만 잘못된 결과가 나오는 경우

무엇이 누락 되었습니까?

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); 

답변

0

참고 :이 문제가 발생하는 경우, 응답의 실제 내용을 검사, 그것은 인덱스와 쿼리 사이에 불일치의 결과 일 수도있다.

내 문제는 내가 사용하고있는 특정 쿼리가 지정된 인덱스에 적합하지 않으며 400이라는 결과가 나온 것입니다.

관련 문제