我正在尝试使用以下代码片段将大型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 MB。但是,当我执行上述代码片段时,出现错误“请求大于服务器愿意或能够处理的请求。”,响应的状态码为413。
我在创建HttpEntity时尝试使用noSizeLimit,如下所示
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知识成为一个障碍。
当我使用withoutSizeLimit时,我期望Akka的akka.http.parsing.max-content-length将被覆盖,并且这个单个请求将被视为一个大请求。