Я использую следующий код для RestHighLevelClient в Elasti c Поиск.
val credentialsProvider = new BasicCredentialsProvider
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(conf.value.getString("elkUserName"),conf.value.getString("elkPassword")))
val builder = RestClient.builder(new HttpHost(conf.value.getString("elkIp"), Integer.valueOf(conf.value.getString("elkPort"))))
.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
//set timeout
override def customizeRequestConfig(requestConfigBuilder: RequestConfig.Builder): RequestConfig.Builder = requestConfigBuilder.setConnectTimeout(Integer.valueOf(conf.value.getString("elkWriteTimeOut"))).setSocketTimeout(Integer.valueOf(conf.value.getString("elkWriteTimeOut")))
}) .setHttpClientConfigCallback(new HttpClientConfigCallback() {
override def customizeHttpClient( httpClientBuilder:HttpAsyncClientBuilder): HttpAsyncClientBuilder= {
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
}
})
client = new RestHighLevelClient(builder)
val requestBuilder = RequestOptions.DEFAULT.toBuilder
requestBuilder.setHttpAsyncResponseConsumerFactory(
new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory(1024 * 1024 * 1024))
var request = new BulkRequest()
request.setRefreshPolicy("wait_for")
var sizeOfRequest = 1L
newListOfMap.foreach { vals =>
val newMap = vals.asJava
request.add(new IndexRequest(indexName).source(newMap))
}
client.bulk(request, requestBuilder.build)
НО я получаю следующее исключение
java .lang.NoSuchMethodError : org. apache .http.ConnectionClosedException: метод () V не найден в org. apache .http.nio.protocol.HttpAsyncRequestExecutor.endOfInput (HttpAsyncRequestExecutor. java: 356) в орг. apache. .impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection. java: 261) в org. apache .http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch. * 101 * * 10 10) 81 .http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch. java: 39) в org. apache .http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch. java: 114) или . apache .http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor. java: 162) в орг. apache .http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor. java: 337) в орг. apache .http.impl.nio.reactor.AbstractIOReactor .processEvents (AbstractIOReactor. java: 315) в орг. apache .http.impl.nio.reactor.AbstractIOReactor.execute (AbstractIOReactor. java: 276) в орг. apache .http.impl.nio .reactor.BaseIOReactor.execute (BaseIOReactor. java: 104) в орг. apache .http.impl.nio.reactor.AbstractMultiworkerIOReactor $ Worker.run (AbstractMultiworkerIOReactor. java: 591) в java. .Thread.run (Thread. java: 748) org. apache .http.ConnectionClosedException: соединение неожиданно закрывается в org.elasticsearch.client.RestClient.extractAndWrapCause (RestClient. java: 778) в org.elasticsearch. client.RestClient.performRequest (RestClient. java: 218) в org.elasticsearch.client.RestClient.performRequest (RestClient. java: 205) в org.elasticsearch.client.RestHighLevelClient.internalPerformReg. 1454) по адресу org.elasticsearch.client.RestHighLevelClient.performRequest (RestHighLevelClient. java: 1424) по адресу org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity (RestHighLevel: 10: 9: 10). 4) в org.elasticsearch.client.RestHighLevelClient.bulk (RestHighLevelClient. java: 492) в Utils.ELKUtil $ .postDataToELK (ELKUtil. scala: 59)
ПРИМЕЧАНИЕ. Выше код работает для меньшего размера запроса, но выдает ошибку выше при публикации большего размера запроса. Пожалуйста, предложите.