【问题标题】:Bad Request on AWS ElasticSearchAWS ElasticSearch 上的错误请求
【发布时间】:2017-02-01 20:30:41
【问题描述】:

我正在尝试连接到 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);

【问题讨论】:

    标签: scala amazon-web-services amazon-elasticsearch aws-java-sdk


    【解决方案1】:

    注意:如果遇到此问题,请检查响应的实际内容,这可能是索引与查询不匹配的结果。

    我的问题是我使用的特定查询不适合指定的索引,导致 400

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 2023-04-03
      • 2015-03-31
      • 1970-01-01
      • 2018-09-06
      相关资源
      最近更新 更多