320x100
Elastic search에 C++ http client로 데이터를 밀어넣었을 때,
첫 번째 Post는 정상이였고, 그 이후부터 다음과 같은 에러가 발생했다.
{
"error": {
"root_cause": [
{
"type": "content_type_header_exception",
"reason": "java.lang.IllegalArgumentException: only one Content-Type header should be provided"
}
],
"type": "content_type_header_exception",
"reason": "java.lang.IllegalArgumentException: only one Content-Type header should be provided",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "only one Content-Type header should be provided"
}
},
"status": 400
}
헤더를 한번만 제공해야된다는 얘기인데 내가
HTTPClient::HeadersMap requestHeaders.insert({ "Content-Type", "application/json" });
httpclient.Post(std::format("http://{0}:{1}/{2}/_doc", m_ip, m_port, "document"), RequestHeaders, _data, _length, response);
외에 데이터를 추가로 넣은 줄 알았다.
근데 Post 요청마다 담은 헤더가 문제였다.
Post를 한번 보냈으면 다음부터는
if (m_isFirst)
{
HTTPClient::HeadersMap requestHeaders;
requestHeaders.insert({ "Content-Type", "application/json" });
HTTPClient::HttpResponse response;
httpclient.Post(std::format("http://{0}:{1}/{2}/_doc", m_ip, m_port, "document"), RequestHeaders, _data, _length, response);
m_isFirst = false;
}
else
{
HTTPClient::HeadersMap requestHeaders;
HTTPClient::HttpResponse response;
httpclient.Post(std::format("http://{0}:{1}/{2}/_doc", m_ip, m_port, "document"), RequestHeaders, _data, _length, response);
}
이렇게 보내야 에러가 안나고 정상적으로 데이터가 추가된다.
320x100