Я пытаюсь записать большой файл JSON в упругий поиск, используя фрагмент следующего кода
val system = mat.system
import system.dispatcher
val response = Http(system).singleRequest(httpRequest).map {res =>
if (res.status == StatusCodes.OK) {
res.discardEntityBytes()
Success(true)
} else {
println(s"Unsuccessful response: $res with http code: ${res.status}")
Success(false)
}
}
try {
Await.result(response, timeout.duration)
} catch {
case t: Throwable => {
println(t, s"Error occurred")
Failure(t)
}
}
Этот большой файл JSON не слишком большой. Это всего 150 МБ. Но когда я выполняю приведенный выше фрагмент, я получаю сообщение об ошибке «Запрос больше, чем сервер хочет или может обработать», с кодом состояния ответа 413.
Я пытался использовать безSizeLimit при создании HttpEntity, как показано ниже
val lines = //Get all lines from the 150MB file
val httpEntity = HttpEntity.Strict(ContentTypes.`application/json`, data = ByteString(lines)).withoutSizeLimit()
val httpRequest = HttpRequest(uri = s"http://$server:$port/$index/_bulk", entity = httpEntity, method = HttpMethods.POST)
Я также пытался выполнить этот запрос, используя графики, но мои ограниченные знания Akka Streams / Graphs служили помехой.
Когда я использовал безSizeLimit, я ожидал, что akka.http.parsing.max-content-length Акки будет переопределен, и этот единственный запрос будет считаться большим запросом.