AWS ElasticSearch 上的错误请求
Bad Request on AWS ElasticSearch
我正在尝试连接到一个 IAM 控制的 ElasticSearch 域,我创建了一个请求并对其进行了签名,对于方法 GET 一切正常,但是在方法 POST 上我得到了 400 Bad请求
这显然与负载有关。如果我提供有效载荷空字符串 (""),它会正常工作,但任何其他都会导致错误请求。
我错过了什么?
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);
注意:如果您 运行 遇到此问题,请检查响应的实际内容,这可能是索引与您的查询不匹配的结果。
我的问题是我使用的特定查询不适合指定的索引,这导致了 400
我正在尝试连接到一个 IAM 控制的 ElasticSearch 域,我创建了一个请求并对其进行了签名,对于方法 GET 一切正常,但是在方法 POST 上我得到了 400 Bad请求
这显然与负载有关。如果我提供有效载荷空字符串 (""),它会正常工作,但任何其他都会导致错误请求。
我错过了什么?
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);
注意:如果您 运行 遇到此问题,请检查响应的实际内容,这可能是索引与您的查询不匹配的结果。
我的问题是我使用的特定查询不适合指定的索引,这导致了 400